C语言成长学习题(十)
四十一、编写实现以下功能的程序:若从键盘输入字符Y(或y)或N(或n),则终止循环,否则一直等待输入。
1 #include <stdio.h> 2 #include <conio.h> 3 4 void main(void) 5 { 6 char c; 7 8 printf("是否继续(Y/N)?\n"); 9 do 10 { 11 c = getch(); 12 if (c == 'Y' || c == 'y' || c == 'N' || c =='n') 13 break; 14 printf("输入错误,请重新输入一个字符.\n"); 15 }while (1); 16 printf("输入正确.\n"); 17 }
四十二、在100以内的三个数i、j、k中,找出满足i2 + j2 + k2 > 100的数(只要求找出一个)。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, j, k; 6 7 for (i = 1; i < 100; i++) 8 for ( j = 1; j < 100; j++) 9 for ( k = 1; k < 100; k++) 10 if ( i * i + j * j + k * k > 100) 11 goto stop; 12 13 stop: 14 printf("i = %d, j = %d, k = %d\n", i, j, k); 15 }
四十三、输入若干学生的成绩(用负数结束输入),计算其平均成绩,并统计不低于平均分的学生人数。
1 #include <stdio.h> 2 3 #define N 40 4 5 void main(void) 6 { 7 int i, n = 0, count = 0; 8 float score, total = 0, a[N], ave; 9 10 printf("Input data: "); 11 scanf("%f", &score); 12 while ( score >= 0) 13 { 14 a[n++] = score; 15 total += score; 16 scanf("%f", &score); 17 } 18 ave = total / n; 19 for (i = 0; i < n; i++) 20 if (a[i] >= ave) 21 count++; 22 printf("ave = %f, count = %d\n", ave, count); 23 }
结果:
Input data: 55 66 77 88 99 100 -1
ave = 80.833333, count = 3
四十四、定义含有10个元素的数组,并按顺序和逆序输出数组中各元素的值。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, j, t; 6 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 7 8 for (i = 0; i < 10; i++) 9 printf("%4d", a[i]); 10 printf("\n"); 11 for (i = 9; i >= 0; i++) 12 printf("%4d", a[i]); 13 printf("\n"); 14 }
结果:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
四十五、定义含有10个元素的数组,并将数组中的元素按逆序重新存放后输出。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, t, a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 6 7 for (i = 0; i < 10; i++) 8 printf("%4d", a[i]); 9 printf("\n"); 10 11 for (i = 0; i < 5; i ++) 12 { 13 t = a[i]; 14 a[i] = a[9 - i]; 15 a[9 - i] = t; 16 } 17 for (i = 0; i < 10; i++) 18 printf("%4d", a[i]); 19 printf("\n"); 20 }