10-数组
Posted tiantiancode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10-数组相关的知识,希望对你有一定的参考价值。
一、数组
数组是一系列相同数据类型的集合。
Int 31 28 31 30 31 30 31 31 30 31 30 31
一个数组里面每一个元素的变量名是相同的,数组下标。数组下标都是从0开始的。
int month[12]; //声明数组 数组的下标是 month[0]-month[11]
数组的存放,都是连续一块内存。
1、数组的初始化
数据类型 数组名[数组的大小]; 声明数组
初始化:
a、在声明数组的同时用{}来赋值,用逗号分隔,用分号结束。
int days[12] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ;
b、如果声明的时候没有赋值,不能整体赋值。
//错误
//month[12];表示的是数组里面的第13个元素
//month[12] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
//month[12] = days[12];
//month = days;
c、赋值到时候要逐个元素进行赋值。
month[0] = 31;
month[1] = 28;
month[2] = 31;
for (int i = 0; i < 12; i++)
printf("%d\\n", month[i]);
d、数组元素小于数组大小的情况,但是一个都没有的情况下就是乱码。
int days[12]= 31, 28, 31, 30, 31, 30;//初始化
把有点元素赋值,没有的赋值为0;但是,单个赋值除外。
students[1] = 24;
for (i = 0; i < 12; i++) //从0开始到11结束的循环
printf("%d\\n", students[i]);
备注,如果元素多了,编译器会报错。
f、可以省略数组的下标,让元素个数自动匹配数组大小,初始化。
int students[] = 20, 24, 25, 26, 27, 30, 35, 15, 37 ; //今天的听课人数
元素个数为:sizeof(students) / sizeof(students[0])
1 #include <stdio.h> 2 3 int main() 4 5 6 int i, j; 7 //数组的初始化 8 //int month[12]; //声明数组 数组的下标是 month[0]-month[11] 9 10 //int days[12]= 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ;//初始化 11 12 ////给模拟month赋值 13 //for (int i = 0; i < 12; i++) 14 // 15 // month[i] = i + 1; 16 // printf("%d\\n", month[i]); 17 // 18 19 //错误 20 //month[12];表示的是数组里面的第13个元素 21 //month[12] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; 22 //month[12] = days[12]; 23 //month = days; 24 25 26 //d、数组的元素个数小于数组的大小 27 //int days[12]= 31, 28, 31, 30, 31, 30 ,31,30,31,30,31,31; 28 29 //for (i = 0; i < 12; i++) //从0开始到11结束的循环 30 // 31 // printf("%d\\n", days[i]); 32 // 33 34 35 //f、可以省略数组的下标,让元素个数自动匹配数组大小。 36 //int students[12]; //= 20, 24, 25, 26, 27, 30, 35, 15, 37 ; //今天的听课人数 37 // 38 //students[1] = 24; 39 40 //for (i = 0; i < 12; i++) //从0开始到11结束的循环 41 // 42 // printf("%d\\n", students[i]); 43 // 44 45 //在省略下标的情况下打印所有元素 46 /*int students[]= 20, 24, 25, 26, 27, 30, 35, 15, 37,13,2,46,5,41,56, 47 48,74,8,7,4,6,8,3,7,6,38,746,974,64,68,4,98,74; 48 49 for (i = 0; i < sizeof(students) / sizeof(students[0]); i++) 50 51 printf("%d\\n", students[i]); 52 */ 53 54 int arr[5] = 0 ; 55 56 for (i = 0; i < 5; i++) //从0开始到11结束的循环 57 58 printf("%d\\n", arr[i]); 59 60 61 return 0; 62
实例:
1 //打印出一个人的成绩单 计算平均值 2 3 #include <stdio.h> 4 5 int main() 6 7 int i; 8 int avg=0,total=0; //声明两个 平均分 总分 9 int score[] = 85, 95, 76, 77, 68, 97 ; //各科成绩 10 11 12 printf("\\t语文\\t数学\\t英语\\t物理\\t化学\\t生物\\t总分\\t平均分\\n"); 13 14 for (i = 0; i < sizeof(score) / sizeof(score[0]); i++) 15 16 printf("\\t%d", score[i]); //打印各个分数 17 total = total + score[i]; //计算总分 18 19 20 avg = total / (sizeof(score) / sizeof(score[0])); //计算平均分 21 printf("\\t%d\\t%d\\n", total, avg); //打印总分和平均分 22 23 return 0; 24
二、二维数组
二维数组:数组元素是双下标变量的数组。
数据类型 数组名[行][列];
仍然是连续存放的。
1、初始化
A、一般形式
int arr[3][3] =
18, 20, 26 ,
35, 10, 23 ,
24, 32, 58 ;
B、省去里面的{}
int arr1[3][3] = 18, 20, 26,
35, 10, 23,
24, 32, 58 ;
C、//只能省略行下标,不能省略列下标
int arr2[][3] = 18, 20, 26,
35, 10, 23,
24, 32, 58 ;
D、int arr2[][3] = 0 ; //arr[0][0]=0; 整个数组都是0
2、赋值
大写加粗的注意:数组的大小为n 数组下标就是从 0 ----- n-1
1 int n; 2 3 for (i = 0; i < 2;i++) 4 5 for (j = 0; j < 4;j++) 6 7 for (n = 0; n < 6; n++) 8 9 printf("0\\t"); 10 11 12
实例::
1 #include <stdio.h> 2 3 int main() 4 5 //二维数组的初始化 6 //int arr[3][3] = 7 // 18, 20, 26 , 8 // 35, 10, 23 , 9 // 24, 32, 58 ; 10 11 //int arr1[3][3] = 18, 20, 26, 12 // 35, 10, 23, 13 // 24, 32, 58 ; 14 15 16 //int arr2[][3] = 18, 20, 26, //只能省略行下标,不能省略列下标 17 // 35, 10, 23, 18 // 24, 32, 58 ; 19 20 //int arr3[][3] = 0 ; //arr[0][0]=0; 整个数组都是0 21 22 //二维数组的赋值 23 int i, j; 24 int max, min; 25 int Arr[2][3]; 26 int Arr1[3][2]; 27 28 //用两个嵌套for赋值 用键盘 29 printf("输入数字:\\n"); 30 31 for (i = 0; i < 2; i++) 32 33 for (j = 0; j < 3; j++) 34 35 scanf("%d", &Arr[i][j]); //getchar 36 37 38 39 40 //打印 41 for (i = 0; i < 2; i++) 42 43 for (j = 0; j < 3; j++) 44 45 printf("Arr[%d][%d]=%d\\t", i, j, Arr[i][j]); //getchar 46 47 printf("\\n"); 48 49 50 printf("\\n\\n"); 51 52 //求最大值 53 max = Arr[0][0]; //Arr[0][0]数组的第一个元素 54 for (i = 0; i < 2; i++) 55 56 for (j = 0; j < 3; j++) 57 58 if (max < Arr[i][j]) 59 60 max = Arr[i][j]; 61 62 63 64 65 printf("max=%d\\n", max); 66 printf("\\n\\n"); 67 68 //把输入的数组给他赋给另外一个数组 69 for (i = 0; i < 2; i++) 70 71 for (j = 0; j < 3; j++) 72 73 Arr1[j][i] = Arr[i][j]; 74 75 76 77 for (i = 0; i < 3; i++) 78 79 for (j = 0; j < 2; j++) 80 81 printf("Arr1[%d][%d]=%d\\t", i, j, Arr1[i][j]); 82 83 printf("\\n"); 84 85 86 return 0; 87
以上是关于10-数组的主要内容,如果未能解决你的问题,请参考以下文章