五十一、将从键盘输入的一个数,插入到已按降序排列的数组中,要求按原来的排序规律插入。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, j = 0, k, a[11] = {20, 18, 16, 14, 12, 10, 8, 6, 4, 2}; 6 7 for (i = 0; i < 10; i++) 8 printf("%4d", a[i]); 9 printf(" "); 10 11 printf("Input k: "); 12 scanf("%d", &k); 13 while (a[j] >= k && j < 10) 14 j++; 15 for (i = 10; i >= j + 1; i--) 16 a[i] = a[i-1]; 17 a[j] = k; 18 for (i = 0; j < 11; j++) 19 printf("%4d", a[i]); 20 printf(" "); 21 }
结果:
20 18 16 14 12 10 8 6 4 2
Input k: 15
20 18 16 15 14 12 10 8 6 4 2
while后的表达式a[j] >k && j < 10不能只写出a[j] > k,因为结束while循环的条件有两个:当找出第一个比k小的元素或者找不到比k小的元素。
五十二、投掷100次骰子,统计各点数出现的次数。
1 #include <stdio.h> 2 #include <time.h> //调用randomize()时需要此头文件 3 #include <stdlib.h> //调用randomize()或random()时需要此头文件 4 5 void main(void) 6 { 7 int i, n, a[7] = {0, 0, 0, 0, 0, 0, 0}; 8 9 randomize(); 10 for (i = 1; i <= 100; i++) 11 { 12 n = random(6) + 1; 13 a[n] = a[n] + 1; 14 } 15 printf(" 出现1点 出现2点 出现3点 出现4点 出现5点 出现6点 "); 16 for (i = 1; i <= 6; i++) 17 printf("%8d", a[i]); 18 printf(" "); 19 }
randomize()能够保证每次运行时产生的随机数不同,random(k)是随机产生大于等于0,且小于k的整数。
五十三、编程实现用数组的方法找出2~100以内所有素数。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, j, a[100] = {0}; 6 7 for (i = 2; i < 100; i++) 8 if(a[i] == 1) 9 continue; 10 else 11 for (j = i + i; i < 100; j = j + i) 12 if (a[j] != 1) 13 a[j] = 1; 14 15 for( i = 2; i < 100; i++) 16 if (a[i] == 0) 17 printf("%3d", i); 18 printf(" "); 19 }
结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
五十四、编写程序将字符串存放在一维字符组中。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i = 0; 6 char a[] = "K" //等价于char a[] = {'K', ' '); 7 char b[] = {"Sit down"}; //等价于char b[9] = "Sit down"; 8 9 while ( a[i] != '