C语言上机练习参考答案 下载本文

} 6-75

i++; if (n==0 || i==6) /*该if语句是什么意思?*/ break; switch(n) { case 1: printf(\price is %.2f.\\n\crisps); break; case 2: printf(\ break; case 3: printf(\price is %.2f.\\n\chocolate); break; case 4: printf(\price is %.2f.\\n\cola); break; default: printf(\ } } 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和。例

如6=3+3,8=3+5,…,18=7+11。要求将6~100之间的偶数都表示为两个素数之和,输出是一行输出5组。

Program #include <> #include <> main() { int n, p, q, i, k, count=0; for(n=6; n<=100; n=n+2) { for(p=2; p<=n-2; p++) { k = sqrt(p); for (i=2; i<=k; i++) { if ( p%i == 0 ) break; } if ( i <= k ) /*条件为真时,说明什么?*/ continue; /*这里的continue是继续哪个循环?*/ q=n-p; k = sqrt(q); for (i=2; i<=k; i++) { if ( q%i == 0 ) break; } if ( i <= k ) continue; /*什么情况下,下面语句能够得以执行?*/ } 6-76

} } printf(\ count++; if (count%5==0) printf(\ break; /*如果没有这个break,会有什么结果?*/ 一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,

球它在第10次落地时,共经过多少米?第10次反弹多高? Program #include <> main() { float s=0, h=100; int i; for(i=1; i<=10; i++) { s += h*; h = h/; } printf(\ } Output

Distance: , height: 6-77

(中国古典算术问题)某工地需要搬运砖块,已知男人一次搬3块,女人

一人搬2块,小孩两人搬1块。用45人正好搬45块砖,问有多少种搬法? Program #include <> main() { int man, woman, child; for(man=0; man<=45; man++) { for(woman=0; woman<=45-man; woman++) { child=45-man-woman; if (child%2!=0) continue; /*这里的continue是继续哪个循环?*/ if(man*3+woman*2+child/2==45) printf(\ man, woman, child); } } } Output

Man: 0, woman: 15, child: 30 Man: 3, woman: 10, child: 32 Man: 6, woman: 5, child: 34 Man: 9, woman: 0, child: 36 6-78

猴子吃桃问题:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又

多吃了一个。第二天将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个。到第十天想再吃时,发现只剩下一个桃子了。求第一天共摘下多少个桃子?(提示:采用逆向思维)

Program #include <> main() { int peach=1, day; for(day=9; day>=1; day--) /*是否理解该循环语句?*/ peach = (1+peach)*2; printf(\peach); } Output

The first day, the monkey picked 1534 peaches. 6-79 6-80 6-81 6-82 6-83 6-84

有4名专家对4款赛车进行评论: (1)A说:2号赛车是最好的; (2)B说:4号赛车是最好的; (3)C说:3号赛车不是最好的; (4)D说:B说错了。

事实上,只有一款赛车是最好的,而且只有一名专家说对了,其他3个人

都说错了。编程输出最好的赛车编号。

Program #include <> main() { int best, a, b, c, d; for(best=1; best<=4; best++) { a=(best==2); b=(best==4); c=(best!=3); d=!b; /*a, b, c, d分别代表什么?*/ if(a+b+c+d==1) /*如何理解该if语句中的条件?*/ } } { printf(\ break; } Output

The best racing car is No. 3!

第7章 数组

7-1 输入一个正整数n(1?n?10),再输入n个整数 7-2 (1)输出最大数和最小数,并输出平均值。

7-3 (2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的

结果。

7-4 (3)输出所有比平均值大的数。

7-5 (4)找到最接近平均值的数。(提示:考虑差的绝对值)

Program #include <> main() { int a[20], n, max, min, sum, i, p, q, t; float ave, sub; /* 输入元素个数 */ printf(\ scanf(\ /* 输出最大数、最小数和平均数 */ printf(\ for(i=0; ia[i]) { min=a[i]; q=i; } sum=sum+a[i]; } } ave = sum*n; printf(\maximum is: %d, the minimum is: %d, the average is %.2f\\n\