码迷,mamicode.com
首页 > 编程语言 > 详细

C语言之数组

时间:2018-03-11 19:16:00      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:字节   一段   scanf   跳出循环   dex   技术分享   strong   size   组元   

一、数组之一维数组

  1、一维数组的定义 

    int array[3]; //定义了一个一维数组,名字叫array,一共有三个元素,每个元素都是int类型。
    array[0] = 10;
    array[1] = 20;
    array[2] = 30;
    array[3] = 40; //错误,,没有array[3]这个元素,切记
    printf("%d",array[0]); // 10

  2、数组在内存的存储方式
    数组在内存中就是一段连续的空间,每个元素的类型都是一样的。

  3、一维数组初始化
    int array[3] = {1,2,3,};//定义的同时为数组成员赋值
    int array[5] = {1,3,4}; //未赋值的元素自动补0。
    int array[5] = {0};//所有元素均为0。
    循环遍历赋值
    for(i=0;i<10;i++)
    {
      printf("array[%d]=%d\n",i,array[i]);
    }

    for(i=0;i<10;i++)
    {
      scanf("%d",&array[i]); //循环输入来赋值

    }

  4、实例:

    1、求数组中最大元素的值  

     
#include<stdio.h>
int main(void)
{
    int
array[6] = {2,3,-1,4,1513,5}; int max=array[0]; int i; for(i=1;i<7;i++) { if (max<array[i]) { max = array[i]; } } printf("最大值:%d",max);

return 0;
}

    2、求数组中最小元素的值和其下标

技术分享图片
#include<stdio.h>
int main(void)
{

    int array[6] = {2,3,-1,4,1513,5};
    int max=array[0];
    int index = 0;
    int i;
    for(i=1;i<7;i++)
  {
        if (max>array[i])
    {
    max = array[i];
    index = i;
     }    
   }
    printf("最大值:%d,下标:%d",max,index);
        return 0;
}       
View Code

     3、将数组元素逆置

#include<stdio.h>
int main(void)
{
  // for循环版
    int array[6] = {2,3,-1,4,1513,5};
    int temp;
    int i;
    for(i=0;i<=2;i++)
    {
        temp = array[i]; //中间变量实现两者的互换
        array[5-i] = array[i];
        array[i] = temp;
            
    }
    for(i=0;i<6;i++)
    {
        printf("array[%d] = %d\n",i,array[i]);
    }
 
    return 0 ;
}

    while循环版

技术分享图片
#include<stdio.h>
int main(void)
{
  //  while循环版
    int array[6] = {2,3,-1,4,1513,5};
    int temp;
    int max = 5;
    int min = 0;
    while(min<max)
    {
        temp = array[min];
        array[min] = array[max];
        array[max] = temp;
        max--;
        min++;

    }
    for(i=0;i<6;i++)
    {
        printf("array[%d] = %d\n",i,array[i]);
    }

      return 0 ;          
}
View Code

    4、水仙花数:一个n位数,它的每个位上的n次幂的和,等于这个数本身。

      如:153、370

      实例:求100到999之间的所有水仙花数。     

#include<stdio.h>
#include<math.h>
int main(void)
{
    int i,g,s,b;
    int sum = 0;
    for(i=100;i<1000;i++)
    {
        g = i%10; // 个位 
        s = i/10%10; // 十位 
        b = i/100; // 百位 
        //sum = g*g*g+s*s*s+b*b*b;
        sum = pow(g,3)+pow(s,3)+pow(b,3); // pow(a,b) a为底数,b为 指数 
    
        if(sum==i)
        {
            printf("水仙花数:%d\n",i);
        }
    
    }
    return 0;
}

      答案在这里:

技术分享图片
水仙花数:153
水仙花数:370
水仙花数:371
水仙花数:407
View Code   

    5、求3到100的素数(素数是除了1和自己以外,不能被其他整数整除的整数。)

#include<stdio.h> 
int main(void)
{
    int i,j;
    
    for(i=3;i<100;i++)
    {
        int flag = 0; //标志位 
        for(j=2;j<i;j++)
        {
            if(i%j==0)
            {
                flag = 1;  // 不为素数 
                break;  // 跳出循环 
            }
        }
        if (flag==0)
        {
            printf("%d是素数!\n",i);
        }
    }
    return 0;
}

    答案:

技术分享图片
3是素数!
5是素数!
7是素数!
11是素数!
13是素数!
17是素数!
19是素数!
23是素数!
29是素数!
31是素数!
37是素数!
41是素数!
43是素数!
47是素数!
53是素数!
59是素数!
61是素数!
67是素数!
71是素数!
73是素数!
79是素数!
83是素数!
89是素数!
97是素数!
View Code

 

二、数组之二维数组

  1、二维数组的定义  

    int array[2][3];//定义了一个二维数组,有两个array[3],即2行3列,更像一个表格
    printf("%d\t%d\n",sizeof(array),sizeof(array[0])); // 24个字节 12个字节
    array[0][0] = 0; //给第1行第1列赋值
    array[0][1] = 1; //给第1行第2列赋值
    array[1][2] = 2; //给第2行第3列赋值 

  2、二维数组的初始化 

    int b[2][3] = {{1,2,3},{5,6,7}}; //定义了一个二维数组同时初始化成员
    int b[2][3] = {0}; //定义了一个二维数组同时初始化成员都为0  

#include<stdio.h> 
int main(void)
{    
    int b[2][3];
    int i,j;
    for(i=0;i<2;i++) 
    {
      for(j=0;j<3;j++)
      {
        printf("b[%d][%d]=%d\n",i,j,b[i][j]);
      }
    }
    return 0 ;      
}
   //输出
    /*
        b[0][0]=1
        b[0][1]=2
        b[0][2]=3
        b[1][0]=5
        b[1][1]=6
        b[1][2]=7
    */

  3、实例:

    1、分别求二维数组行、列的和   

技术分享图片
#include<stdio.h>

int main(void)
{
    int a[2][3] = {{1,2,3},{6,7,8}};
    int i,j;
    for(j=0;j<3;j++) 
    {
    int sum1= 0;
    for(i=0;i<2;i++)
    {
        sum1+=a[i][j];//每一列的值的和
             
    }
    printf("%d\n",sum1); // 7 
    }
    for(i=0;i<2;i++)
    {
        int sum2 = 0;
        for(j=0;j<3;j++)
        {
        sum2+=a[i][j];//每一行的值的和
        }
        printf("%d\n",sum2); // 6 
    }
   return 0;
}
View Code

    2、冒泡排序

#include<stdio.h> 
int main(void)
{
    int a[10] = {1,4,2,5,6,21,7,0,32,3};
    int i,j,temp;
    for(i=0;i<10;i++)
    {
        for(j=1;j<10-i;j++)
        {
            if(a[j-1]>a[j])
            {
                temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        printf("a[%d]=%d\n",i,a[i]);
    }
    return 0;
}

  答案:

技术分享图片
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
a[8]=21
a[9]=32
View Code

 

  

C语言之数组

标签:字节   一段   scanf   跳出循环   dex   技术分享   strong   size   组元   

原文地址:https://www.cnblogs.com/schut/p/8544842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!