15.7 数字统计
- 请使用者输入10个整数后,输出最大与平均值
13 23 78 77 37 30 40 50 83 99
Max: 99Avg: 53Process returned 0 (0x0) execution time : 36.634 s
Press any key to continue.// 三个参数都狗在一起#includeint main() { int i, n, max, avg, sum = 0; for (i = 1; i <= 10; i++) { scanf("%d", &n); // 读数字 if (i == 1 || n > max) { max = n; // 把第一个数赋值给max,比较合理,如果max直接等于0,那就没有考虑负数的情况 } sum += n; // sum每次加数 } avg = sum / 10; printf("Max: %d\n", max); printf("Avg: %d\n", avg); return 0;}// 各参数依次分开#include int main(){ int i, n[10], avg; for (i = 1; i <= 10; i++) { scanf("%d", &n[i-1]);// 数组是从0开始的 } int max = n[0]; // 把max是为第一个数 for (i = 1; i < 10; i++) { if (n[i] > max) { max = n[i]; } } int sum = n[0]; for (i = 1; i < 10; i++) { sum += n[i]; } avg = sum / 10; printf("Max: %d\n", max); printf("Avg: %d\n", avg); return 0;}// 使用函式来做#include #include int max10(int n[10]);int avg10(int n[10]);void main(){ int i, n[10]; for (i =1; i <= 10; i++) { scanf("%d", &n[i-1]); } printf("Max: %d\n", max10(n)); printf("Avg: %d\n", avg10(n)); return 0;}int max10(int n[10]){ int i, max; for (i = 1; i <= 10; i++) { if (i == 1 || n[i-1] > max) { max = n[i-1]; } } return max;}int avg10(int n[10]){ int i, sum=0; for (i = 1; i <= 10; i++) { sum += n[i-1]; } return sum /10;}
16 产生不重复乱数的练习
- 随机产生一组由10个1到10之间的数字所组成的序列,序列里面没有重复的数字
#include#include #include int main() { srand(time(0)); int i, j, n[10]; for (i = 1; i <= 10; i++) { do { n[i-1] = rand() % 10 + 1;// rand()是产生乱数的函式,rand() % 10 产生1到9,然后再加1;就是1到10了 for (j = 1; j <= i; j++) { if (n[i-1] == n[j-1]) { break; } } }while (j != i); // j=i表示这个值没有被用过,j!=表示这个值被用过了,没有自然的结束,被break了。 printf(" %d", n[i -1]); } printf("\n"); return 0;} 2 10 8 6 5 4 7 3 1 9Process returned 0 (0x0) execution time : 7.412 sPress any key to continue.
16.1 用建表法产生不重复的乱数
#include#include #include int main() { srand(time(0)); int i, n, counter[10] = { 10};// 统计1到10有没有被使用过,计数,为1次表示只用一次没有重复 for (i = 1; i <= 10; i++) { do { n = rand() % 10 + 1;// rand()是产生乱数的函式,rand() % 10 产生1到9,然后再加1;就是1到10了 } while (counter[n-1] != 0);// printf(" %d", n); counter[n-1]++; } printf("\n"); return 0;} 5 2 3 8 10 4 7 6 9
16.2 用交换法产生不重复的乱数
#include#include #include int main() { srand(time(0)); int i,n[10]; for (i = 1; i <= 10; i++) { n[i-1] = i; } for (i = 1; i <= 10; i++) { int j = rand() % (11-i) + i; int t = n[i-1]; // i与j交换 n[i-1] =n[j-1]; n[j-1] = t; printf(" %d", n[i-1]); } printf("\n"); return 0;} 9 7 10 4 1 6 5 3 8 2Process returned 0 (0x0) execution time : 2.027 sPress any key to continue. 1 5 6 3 9 8 7 2 4 10Process returned 0 (0x0) execution time : 1.686 sPress any key to continue.// 每次输出都不一样
17 阵列的排序问题
阵列排序好以后有如下好处:
最大、最小值,中位数,众数,查某一个数(二分)。
17.3 冒泡排序法::
#includeint main(){ int i, j, v[5]; for (i = 0; i < 5; i++) { scanf("%d", &v[i]); }// 用回圈读数 for (i = 0; i < 5; i++) // 比较的轮数 { for (j = 0; j < 5 - i; j++) //开始一轮一轮地比数字 { if (v[j] > v[j + 1]) { int temp = v[j]; v[j] = v[j + 1]; v[j + 1] = temp; } } } for (i = 0; i < 5; i++) { printf("%d ", v[i]); } return 0;}12 13 44 10 99 10 12 13 44Process returned 0 (0x0) execution time : 7.250 sPress any key to continue.
18.2 阵列的阵列
18.3 用二维阵列表示九宫格
#includeint main(){ int v[3][3], i, j, k = 1; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { v[i][j] = k; k++; printf("%d", v[i][j]); } printf("\n");// 这语句很重要,没有这个就是一排,v[1][2]=6 } printf("%d",v[1][2]); return 0;}1234567896Process returned 1 (0x1) execution time : 4.901 sPress any key to continue.
18.4 用一维阵列表示九宫格
#includeint main(){ int v[9]; int i; for (i = 0; i < 9; i++) { // 0~8 v[i] = i + 1; // 1~9 } for (i = 0; i < 9; i++) { printf("%d ", v[i]); if (i % 3 == 2) { //换行的条件 printf("\n"); } }}1 2 34 5 67 8 9Process returned 10 (0xA) execution time : 17.671 sPress any key to continue.
18.5 随机生成九宫格(随机产生是重点)
// 二维产生随机九宫格#include#include #include int main(){ srand(time(0)); int v[3][3] = { { 1,2,3},{ 4,5,6},{ 7,8,9}}; int i, j, k = 0; // k从0开始的时候为(9-k)+k,k从1开始时为(10-k)+k for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { int r = rand() % (9-k) + k;// rand()%10表示将产生的随机数对10求余,结果为余数,整体表示产生0到9的随机数 int m = r / 3; int n = r % 3; // 求所在的行列 int t = v[i][j]; v[i][j] = v[m][n]; v[m][n] = t; k ++; } } for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%d ", v[i][j]); } printf("\n"); } return 0;}6 8 27 1 49 3 5Process returned 0 (0x0) execution time : 11.846 sPress any key to continue.// 一维产生随机九宫格 #include #include #include int main() { srand(time(0)); int v[9] = { 1,2,3,4,5,6,7,8,9}; int i; for (i = 0; i < 9; i++) { int m = rand() % (9-i) + i; int t = v[i]; v[i] = v[m]; v[m] = t; } for (i = 0; i < 9; i++) { printf("%d ", v[i]); if (i % 3 == 2) { printf("\n"); } } return 0;}5 7 96 1 38 4 2Process returned 0 (0x0) execution time : 11.088 sPress any key to continue