C语言基础五 数组

数组跟变量的区别?

数组是可以在内存中连续存储多个元素的结构,所有元素必须属于相同类型。

格式:元素类型 数组名[元素个数];

数组的特点: 只能存放单一元素的数据,里面存放的数据成为元素。

数组的声明:声明数组的类型 ,声明数组的元素个数

变量是可以在内存中存储一个数据的结构。

格式: 元素类型 变量名。

声明变量: Datatype varialename;

 定义时初始化变量:Datatype varialename= value;

定义后初始化变量:varialename=value;

 

数组的简单使用:

初始化:int age[5]={1,2,3,4,5,};

元素由顺序之分,每个元素都有唯一的下标(索引 ),从0开始。

可以声明的元素个数不使用,int a[3] = {1,2}

可以不声明元素个数:int a[] = {1, 2, 3};

 

错误使用:

int a[];无数组数据

 

int[4] a;元素个数在元素名前面,JAVA语言中允许

int a[b];不是元素类型

a = {10, 11};没声明元素类型

 

示例:

//声明数组;数据类型 数组名[数组长度]

int scores[5];

//为数组赋值:数组名[下标]=值;--->下标从0开始

scores[0]=10;

scores[1]=20;

scores[2]=30;

scores[3]=40;

scores[4]=50;

//获取数组中的元素,数组名[下标]

printf("%d,%d,%d,%d,%d\n",scores[0], scores[1],scores[2],scores[3],scores[4] );

//声明赋值一步完成;数据类型 数组名[长度]={值1,值2,值3}; 对应的个数应和元素个数对应

int nums[5]={1,2,3,4,5};

printf("%d,%d,%d,%d,%d\n",nums[0],nums[1],nums[2],nums[3],nums[4]);

int arr[10]={1,2,3,4,5};//6个元素未赋值将使用默认值0

 

int arr[] = {9,8,7};//正确 ,未指定数组的长度(数组长度取决于元素的个数)

 

 

示例:让用户输入5个成绩,根据用户输入的成绩计算最高分,最低分和平均分

 

int scores[5];//声明5个用于存储用户输入的成绩

int sun=0,avg;//总成绩,平均值

int max,min;//最大值,最小值

int i;

 

//循环获取用户输入的成绩,并将其输入成绩保持到数组中

 

 for(i=0;i<5;i++){

    printf("请输入第%d个人成绩:",i+1);

    scanf("%d",&scores[i]);

   sum+=scores[i]; //计算总成绩

   }

   avg=sum/5;//计算平均成绩

   min=max=scores[0];//假设第一个人的成绩是最高分,最低分

   for(i=1;i<5;i++){

     if(scores[i]>max){//获取最高分

    max=scores[i];  

     }

     if(scores[i]<min){//获取最低分

    min=scores[i];  

     }

   }

   printf("平均分为:%d,最高分是%d,最低分%d\n",avg,max,min);

 

 冒泡排序;由小到大

 

 int num[]={2,5,9,7,15};//定义一个数组,数组中可无元素个数

int i,j,temp;//定义变量

 //外层控制比较的轮数(N-1)

 for(i=0;j<4;i++){

//内层循环控制每轮比较的次数

for(j=0;j<4-i;j++){

if(num[j]>num[j+1]){//比较最大值

temp=num[j];//使用中间变量换位置

num[j]=num[j+1];

num[j+1]=tem;

 

}

}

 

}

 

printf("排序后的数字为:");

   //利用循环遍历输出

   for(i=0;i<5;i++){

     printf("%d\t",nums[i]);

   }

 

 

二维数组可以看成由一维数组嵌套

二维数组: 一维数组中的值为一个数组.

  声明: 数据类型 数组名[rowsize][colsize];

  int nums[5][6];

声明并赋值:   

      int nums[4][2]={{10,11},{20,21),{30,31},{40,41}}; 正确

      int nums[][2]={{10,11},{20,21),{30,31},{40,41}}; 正确

      int nums[4][]={{10,11},{20,21),{30,31},{40,41}}; 错误

 

 

示例:声明一个三行三列的二维数组用于保持用户输入的整型数据,打印用户输入的数据并计算对角线之和

int num[3][3];

int i,j,k=0;

//循环获取用户输入的数据,并将其数据保存到二维数组中

for(i=0;i<3;i++)

{

for(j=0;j<3;j++){

printf("请输入第%d行第%d列数据\n",i+1,j+1);

   scanf("%d",&nums[i][j]);//获取用户输入值

}

}

  //循环遍历二维数组的数据,并打印成矩形

   for(i=0;i<3;i++){

      for(j=0;j<3;j++){

       printf("%d\t",nums[i][j]);

       if(i==j){

      sum+=nums[i][j];

         }

      }

      printf("\n");

   }

 

printf("二维数组对角线之和为%d",sum);

 

posted @ 2017-03-20 21:20  代鱼  阅读(390)  评论(0编辑  收藏  举报