1) 一维数组的最值
1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 int a[] = { 1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量 10 11 12 13 int i = 0; 14 15 int max = a[0]; 16 17 for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) 18 19 { 20 21 if (a[i] > max) 22 23 { 24 25 max = a[i]; 26 27 } 28 29 } 30 31 printf("数组中最大值为:%d\n", max); 32 33 34 35 return 0; 36 37 }
2) 一维数组的逆置
1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 int a[] = { 1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量 10 11 12 13 int i = 0; 14 15 int j = sizeof(a) / sizeof(a[0]) -1; 16 17 int tmp; 18 19 20 21 while (i < j) 22 23 { 24 25 tmp = a[i]; 26 27 a[i] = a[j]; 28 29 a[j] = tmp; 30 31 i++; 32 33 j--; 34 35 } 36 37 38 39 for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) 40 41 { 42 43 printf("%d ", a[i]); 44 45 } 46 47 printf("\n"); 48 49 50 51 return 0; 52 53 }
3) 冒泡法排序
1 #include <stdio.h> 2 3 4 5 int main() 6 7 { 8 9 int a[] = { 1, -2, 3,- 4, 5, -6, 7, -8, -9, 10 };//定义一个数组,同时初始化所有成员变量 10 11 12 13 int i = 0; 14 15 int j = 0; 16 17 int n = sizeof(a) / sizeof(a[0]); 18 19 int tmp; 20 21 22 23 //1、流程 24 25 //2、试数 26 27 for (i = 0; i < n-1; i++) 28 29 { 30 31 for (j = 0; j < n - i -1 ; j++)//内循环的目的是比较相邻的元素,把大的放到后面 32 33 { 34 35 if (a[j] > a[j + 1]) 36 37 { 38 39 tmp = a[j]; 40 41 a[j] = a[j+1]; 42 43 a[j+1] = tmp; 44 45 } 46 47 } 48 49 } 50 51 52 53 for (i = 0; i < n; i++) 54 55 { 56 57 printf("%d ", a[i]); 58 59 } 60 61 printf("\n"); 62 63 64 65 return 0; 66 67 }
等腰三角星星
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 int main() 7 { 8 9 int row; 10 printf("请输入行数:\n"); 11 scanf("%d", &row); 12 for (int i = 1; i <= row; i++) 13 { 14 for (int j = 1; j <= row - i; j++) 15 { 16 printf(" "); 17 } 18 for (int k = 1; k <= i * 2 - 1; k++) 19 { 20 printf("*"); 21 } 22 printf("\n"); 23 24 } 25 26 system("pause"); 27 return EXIT_SUCCESS; 28 }
水仙花
输出0-1000以内的水仙花数
水仙花数算法:一个数=它各位的立方和,例如:153= 1*1*1 + 5*5*5 + 3*3*3
提示:for循环,求余(%)、取整(/)运算符
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 int main() 7 { 8 9 for (int i = 0; i < 1000; i++) 10 { 11 //将一个三位数拆解成个位 十位 百位 12 int a = 0, b = 0, c = 0; 13 //百位 14 a = i / 100; 15 //十位 16 b = i / 10 % 10; 17 //个位 18 c = i % 10; 19 if (a*a*a + b*b*b + c*c*c == i) 20 { 21 printf("%d是水仙花\n", i); 22 } 23 } 24 25 system("pause"); 26 return EXIT_SUCCESS; 27 }
九九乘法口诀
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 int main() 7 { 8 9 //linux 无法编译程序 -std=c90 c99 gcc -o .exe .c -std=c99 10 int i, j; 11 for (i = 1; i <= 9; i++) 12 { 13 for (j = 1; j <= i; j++) 14 { 15 printf("%d*%d=%d\t", j, i, i*j); 16 } 17 printf("\n"); 18 } 19 20 21 system("pause"); 22 return EXIT_SUCCESS; 23 }
二维数组
1 #include <stdio.h> 2 3 int main() 4 { 5 //定义了一个二维数组,名字叫a 6 //二维数组是本质上还是一维数组,此一维数组有3个元素 7 //每个元素又是一个一维数组int[4] 8 int a[3][4] = { 1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12 }; 9 10 //数组名为数组首元素地址,二维数组的第0个元素为一维数组 11 //第0个一维数组的数组名为a[0] 12 printf("a = %p\n", a); 13 printf("a[0] = %p\n", a[0]); 14 15 //测二维数组所占内存空间,有3个一维数组,每个一维数组的空间为4*4 16 //sizeof(a) = 3 * 4 * 4 = 48 17 printf("sizeof(a) = %d\n", sizeof(a)); 18 19 //测第0个元素所占内存空间,a[0]为第0个一维数组int[4]的数组名,4*4=16 20 printf("sizeof(a[0]) = %d\n", sizeof(a[0])); 21 22 //测第0行0列元素所占内存空间,第0行0列元素为一个int类型,4字节 23 printf("sizeof(a[0][0]) = %d\n", sizeof(a[0][0])); 24 25 //求二维数组行数 26 printf("i = %d\n", sizeof(a) / sizeof(a[0])); 27 28 // 求二维数组列数 29 printf("j = %d\n", sizeof(a[0]) / sizeof(a[0][0])); 30 31 //求二维数组行*列总数 32 printf("n = %d\n", sizeof(a) / sizeof(a[0][0])); 33 34 35 system("pause"); 36 return 0; 37 }
1 #include <stdio.h> 2 3 int main1() 4 { 5 //定义了一个二维数组,名字叫a 6 //二维数组是本质上还是一维数组,此一维数组有3个元素 7 //每个元素又是一个一维数组int[4] 8 int a[3][4] = { 1, 2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12 }; 9 10 //数组名为数组首元素地址,二维数组的第0个元素为一维数组 11 //第0个一维数组的数组名为a[0] 12 printf("a = %p\n", a); 13 printf("a[0] = %p\n", a[0]); 14 15 //测二维数组所占内存空间,有3个一维数组,每个一维数组的空间为4*4 16 //sizeof(a) = 3 * 4 * 4 = 48 17 printf("sizeof(a) = %d\n", sizeof(a)); 18 19 //测第0个元素所占内存空间,a[0]为第0个一维数组int[4]的数组名,4*4=16 20 printf("sizeof(a[0]) = %d\n", sizeof(a[0])); 21 22 //测第0行0列元素所占内存空间,第0行0列元素为一个int类型,4字节 23 printf("sizeof(a[0][0]) = %d\n", sizeof(a[0][0])); 24 25 //求二维数组行数 26 printf("i = %d\n", sizeof(a) / sizeof(a[0])); 27 28 // 求二维数组列数 29 printf("j = %d\n", sizeof(a[0]) / sizeof(a[0][0])); 30 31 //求二维数组行*列总数 32 printf("n = %d\n", sizeof(a) / sizeof(a[0][0])); 33 34 35 system("pause"); 36 return 0; 37 } 38 int main() 39 { 40 //二维数组: 五行、三列 41 //行代表人: 老大到老五 42 //列代表科目:语、数、外 43 float a[5][3] = { { 80, 75, 56 },{ 59, 65, 71 },{ 59, 63, 70 },{ 85, 45, 90 },{ 76, 77, 45 } }; 44 45 int i, j, person_low[3] = { 0 }; 46 float s = 0, lesson_aver[3] = { 0 }; 47 48 for (i = 0; i < 3; i++) 49 { 50 for (j = 0; j < 5; j++) 51 { 52 s = s + a[j][i]; 53 if (a[j][i] < 60) 54 { 55 person_low[i]++; 56 } 57 } 58 59 lesson_aver[i] = s / 5; 60 s = 0; 61 } 62 63 printf("各科的平均成绩:\n"); 64 for (i = 0; i < 3; i++) 65 { 66 printf("%.2f\n", lesson_aver[i]); 67 } 68 69 printf("各科不及格的人数:\n"); 70 for (i = 0; i < 3; i++) 71 { 72 printf("%d\n", person_low[i]); 73 } 74 system("pause"); 75 return 0; 76 }