#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 平均分