2_C语言中的数据类型 (九)数组
1 数组
1.1 一维数组定义与使用
int array[10];//定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的
array[0] = 20; array[1] = 30; array[9] = 80;
//array[10] = 100;//错误,没有 array[10]这个元素 |
1.2 数组在内存的存储方式
数组在内存中就是一段连续的空间,每个元素的类型是一样的
1.3 一维数组初始化
int array[10] = { 100, 1, 5, 3, 4, 5, 6, 7, 8, 0 };//定义数组的同时为数组的成员初始化值 |
int array[10] = { 3, 7, 9 };//将数组的前三个元素赋值,其余元素置为0 |
int array[10] = { 0 };//将数组所有的元素都置为0 |
int i; for (i = 0; i < 10; i++) { array[i] = 0;//通过循环遍历数组的每个元素,将元素的值置为0 } |
1.4 二维数组定义与使用
int array[2][3];//定义了一个二维数组,有两个array[3] |
1.5 二维数组初始化
int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; |
|
#include <stdio.h> #pragma warning(disable:4996) int main01() { short array[10];//定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的 array[0] = 20; array[1] = 30; array[9] = 80; //array[10] = 100;//错误,没有 array[10]这个元素 printf("%d\n", array[1]); int i; for (i = 0; i < 10; i++) { array[i] = i;//array[0] = 0;, array[1] = 1, array[9] = 9; } printf("%p\n", array); return 0; } int main02()//数组初始化 { //int array[10] = { 100, 1, 5, 3, 4, 5, 6, 7, 8, 0 };//定义数组的同时为数组的成员初始化值 //int array[10] = { 3, 7, 9 };//将数组的前三个元素赋值,其余元素置为0 int array[10] = { 0 };//将数组所有的元素都置为0 //printf("%p\n", array); int i; for (i = 0; i < 10; i++) { scanf("%d", &array[i]);// = 0;//通过循环遍历数组的每个元素,将元素的值置为0 } for (i = 0; i < 10; i++) { printf("array[%d] = %d\n", i, array[i]); } return 0; } int main03()//求数组中最大元素的值,和最大值对应的数组下标 { int array[10] = { 32, 45, 643, 12, 56, 2000, 78, 22, 69, 10 }; int max = array[0]; int i; for (i = 1; i < 10; i++)//想找最大的值,一定要把数组先遍历一遍 { if (max < array[i]) max = array[i]; } printf("max = %d\n", max); return 0; } int main04()//求数组中最小元素的值,和最小值对应的数组下标 { int array[10] = { 32, 45, 643, 12, -56, 2000, 78, 22, 69, 10 }; int min = array[0]; int index = 0;//在没有遍历数组之前,默认数组的第0号元素就是最小的元素 int i; for (i = 1; i < 10; i++)//想找最小的值,一定要把数组先遍历一遍 { if (min > array[i]) { index = i; min = array[i]; } } printf("min = %d, index = %d\n", min, index); return 0; } int main05()//求数组中所有元素的和 { int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 }; int i; int sum = 0;//存放数组和的变量 for (i = 0; i < 10; i++) { sum += array[i]; } printf("sum = %d\n", sum); return 0; } int main06()//求数组中大于平均数的元素和下标 { int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 }; int i; int sum = 0;//存放数组和的变量 for (i = 0; i < 10; i++) { sum += array[i]; } int avg = sum / 10; printf("avg = %d\n", avg); for (i = 0; i < 10; i++) { if (array[i] > avg) { printf("%d, %d\n", array[i], i); } } return 0; } int main()//将数组元素逆置, { int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 }; // //int tmp = array[1];//中间变量实现两个值的互换 //array[1] = array[0]; //array[0] = tmp; int min = 0;//数组最小下标 int max = 9;//数组的最大下标 while (min < max)//两头往中间堵 { int tmp = array[min]; array[min] = array[max]; array[max] = tmp; min++; max--; } int i; //for (i = 0; i <= 4; i++)//从头往中间走 //{ // int tmp = array[i]; // array[i] = array[9 - i]; // array[9 - i] = tmp; //} for (i = 0; i < 10; i++) { printf("array[%d] = %d\n", i, array[i]); } return 0; }
#include <stdio.h> int main01()//求100到999之间的水仙花数 { int i; for (i = 100; i < 1000; i++) { int i1 = i % 10;//求个位数 int i2 = i / 10 % 10;//求10位数 int i3 = i / 100;//求100位数 if ((i1 * i1 * i1 + i2 * i2 * i2 + i3 * i3 * i3) == i) printf("%d\n", i); } return 0; } int main02()//求一个int数组中,所有奇数元素的和 { int array[10] = { 2, 4, 3, 78, 13, 12, 5, 9, 10, 15 }; int i; int sum = 0; for (i = 0; i < 10; i++) { if ((array[i] % 2) == 1) { sum += array[i]; } } printf("sum = %d\n", sum); return 0; } int main()//求从3到100之间所有素数 { int i; //素数是除了1和自己以外,不能被其他整数整除的整数 for (i = 3; i < 100; i++) { int j; int status = 0; for (j = 2; j < i; j++)//判断i是否为素数 { if ((i % j) == 0) { status = 1; break; } } if (status == 0)//代表这是个素数 { printf("%d\n", i); } } return 0; } //14 //2 ---- 13
#include <stdio.h> int main() { //int array[2][3];//定义了一个二维数组,有两个array[3] int array[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };//定义一个二维数组的同时初始化成员 //array[0][0] = 1; //array[1][0] = 4; //int array[2][3] = { 0 };//将二维数组中每个元素的值都初始化为0 //array[0][0] = 0;//给第0行,第0列的元素赋值 //array[1][2] = 0;//给第1行,第2列的元素赋值 //int i[3][7];//二维数组更象一个表格 printf("%d\n", sizeof(array[0][0])); int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < 3; j++) { printf("array[%d][%d] = %d\n", i, j, array[i][j]); } } printf("--------------------------------\n"); int array1[3][5] = { {3, 5, 8, 1, 4}, {34, 2, 67, 21, 6}, {7, 8, 3, 10, 20} }; for (j = 0; j < 5; j++) { int sum = 0; for (i = 0; i < 3; i++) { sum += array1[i][j]; } printf("%d\n", sum);//打印列的和 } for (i = 0; i < 3; i++) { int sum = 0; for (j = 0; j < 5; j++) { sum += array1[i][j]; } printf("%d\n", sum);//打印行的和 } return 0; }
资料来源:传智播客 仅供学习研究