#include
int m;
printf(\请输入数字(0-6):\ scanf (\ switch (m) {
case 0:printf (\ case 1:printf (\ case 2:printf (\ case 3:printf (\ case 4:printf (\ case 5:printf (\ case 6:printf (\ default:printf (\数据输入错误。\ } }
实验5 循环结构程序设计
一、实验目的
1.掌握循环结构程序设计的3种控制语句——while语句、do···while语句、for语句的使用方法。
2.了解用循环的方法实现常用的算法设计。
二、实验内容
1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。) (1)下列程序的功能为:求1~100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。
该程序的运行结果: #include
The sum from 1 to 100 is 5050 main()
{
int i,sum=0; i=1;
while(i<100) while(i<=100) sum=sum+i; { sum=sum+i; i++; i++;} printf(“The sum from 1 to 100 is %d\\n”,sum); }
(2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其
16
该程序的运行结果: 功能,程序以文件名sy5_2.c保存。
#include
char x; x='z';
while(x!='a') while(x!='a'-1)或while(x>='a') {
printf(\ printf(\c\ x++; x- -; } }
(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形:
#include
int i,j,k; char ch;
scanf(\ k=ch-'A'+1;
for (i=1;i<=k;i++) {
for (j=20;j>=i;j--) printf(\
for (j=1;j<=i-1;j++) for (j=1;j<=2*i-1;j++) printf(\ printf(\ }
k=ch-'A';
for (i=k;i>=1;i--)
{ for (i=20;i>=i;i--) for (j=20;j>=i;j--) printf(\
for (j=1;j<2*i-1;j++) for (j=1;j<=2*i-1;j++) printf(\ printf(\ } }
2.程序填空题
(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。
#include
该程序的运行结果: 17
main ()
{ int r, m, n,k, t ; scanf (\ if (m { t=m; m=n; n=t; } /*交换两数*/ k=m*n; r = m%n; while (r) { m=n; n=r; r= m%n ; } printf (\ %d\\n\ n , k/n ); /*输出最大公约数和最小公倍数*/ } (2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。 #include while( x1>0 ) { x2= x1/2-2 ; x1=x2; day++; } printf(\ } (3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。 #include 该程序的运行结果: { int i,j; for(i=0; __ i<10 _____; i++) { j=i*10+6; if (___ i%3!=0 ____) continue; printf(\ } } 3.编程题(写出程序运行结果) (1)计算1~100之间所有含8的数之和。程序以文件名sy5_7.c保存。 18 该程序的运行结果: 参考程序: #include int i, sum=0; for(i=1; i<=100; i++) if(i==8 || i/10==8) sum+=i; printf(\} (2)编写程序,利用下列近似公式计算e值,误差应小于10-5。程序以文件名sy5_8.c保存。 e?1?1111????? 1!2!3!n!参考程序: #include main() { int i=0 ; long n=1; float e=0, t=1; while(t>1e-5) { e+=t; i++; n*=i; t=1.0/n; } printf(\} 该程序的运行结果: (3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。程序以文件名sy5_9.c保存。 参考程序: #include for(i=900;i<=1000;i++) 19 该程序的运行结果: if(i%5==2&&i%7==3&&i%3==1) break; printf(\学生总人数=%d\\n\ } (4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。程序以文件名sy5_10.c保存。 #include int i,j,n,m,no,score,sum; float ave; printf(\输入学生数和每人课程数:\ scanf(\for(i=1;i<=n;i++) { sum=0; printf(\输入第%d个学生的学号: \ scanf(\ printf(\输入第%d个学生的%d门课程成绩: \ for(j=1;j<=m;j++) { scanf(\ sum+=score; } ave=(float)sum/m; printf(\第%d个学生的学号为:%d 为:%.2f\\n\\n\ } } 20 总分为:%d 平均分