实验六 循环结构程序设计(1)
班级______________姓名___________指导老师_____________成绩___________
第_____________机房___________号机器 时间:________________________
实验目的:1,掌握while,do-while 循环语句的使用与区别。
2,掌握循环条件、循环体、循环终止等循环要素。
3,理解循环执行过程。
实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实 验 内 容
一、读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1,
#include <stdio.h>
main()
{
int num=0;
while(num<=2)
{ num++ ;
printf(“%d\n”,num);
}
}
分析结果
运行结果
2,
#include <stdio.h>
main()
{
int a=1,b=10;
while(b--<0)
b-=a ;
a++ ;
printf(“a=%d,b=%d\n”,a,b);
}
第一部分 C语言程序设计上机指导
·27·
·27·
分析结果
运行结果
3,
#include <stdio.h>
main()
{
int y=10
while(y--)
printf(“y=%d \n”,y);
}
分析结果
运行结果
4,
#include <stdio.h>
main()
{
int x=0,y=5,z=3;
do
{ y=y-1;
} while(z-->0&&++x<5) ;
printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);
}
分析结果
运行结果
5,
main()
{
int x =-1;
do
{x = x*x ;
} while(!x) ;
printf(“x=%d\n”,x);
}
分析结果
运行结果
6,
#include <stdio.h>
main()
{
C语言程序设计上机指导与同步训练
·28·
·28·
int x =-1;
while(!x)
x = x*x ;
printf(“x=%d\n”,x);
}
分析结果
运行结果
二、完成程序
要求:根据要求,分析给出的上下语句,填写程序。
1,以下程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请在_______上填写正确内容。
#include <stdio.h>
main()
{ int a,b,t;
scanf("%d %d",&a,&b) ;
while( ___________ )
{ if (a>b)
{ t=a;a=b;b=t;}
printf("%d,%d\n",a,b) ;
scanf("%d %d",&a,&b) ;
}
}
2,下面程序的功能是将小写字母变成对应大写字母后的第二个字母,其中y变成A,
z变成B,请在_______上填写正确内容。
#include <stdio.h>
main()
{
char ch ;
while(ch=getchar()!=’\n’)
{
if (ch >=‘a’ && ch<=‘x’)
_____________________;
else if (ch = ‘y’)
__________________;
else if (ch = ‘z’ )
ch = ‘B’ ;
printf(“%c”,ch);
}
}
3,以下程序功能是计算n! 的值,请在_______上填写正确内容。
#include <stdio.h>
main()
{
第一部分 C语言程序设计上机指导
·29·
·29·
int i,s,n;
s = 1;
i=1;
scanf(_____________);
do
{ s =s*i ;
i++
} while (___________) ;
printf(“s=%d\n”,s);
}
4,以下程序的功能是计算正整数 3829 的各位数字平方和,请在_______上填写正确
内容。
#include <stdio.h>
main()
{
int n,sum= 0 ;
n=3829;
do
{ sum = sum + ____________;
______________________;
} while( n) ;
printf("sum=%d ",sum);
}
5,以下程序的功能是计算S=2+4+8+16+…+128,请在_______上填写正确内容。
#include <stdio.h>
main()
{
int a,s,n,count ;
a=2,s=0,n=1,count=1;
while(count<=7)
{ _____________;
s = s + n ;
_____________;
}
printf(“s = %d“,s );
}
三、调试程序
要求:分析下列程序是否正确,如有错,错在哪里?应如何改正?如正确,运行结果如何?上机调试之。
1,以下程序输出100(包括100)以内的数,每行输出10个。
main()
{ int k=100;
while( k= 0)
{ printf(,%d,“,k) ;
C语言程序设计上机指导与同步训练
·30·
·30·
k--;
if (k%10==0)printf ( "\n") ; }
}
运行结果,
正确
错误所在,
错误
应改为,
2,本程序用来计算5!。
main()
{int i,p ;
i=1;
do
{
p = 1;
p * = i ;
}while (i<=5);
printf(“p = %d \n”,p);
}
运行结果,
正确
错误所在,
错误
应改为,
3,以下程序功能是求 S =1+ 1/2 +1/3 +…+1/10。
main()
{ int n ;
float s ;
s =1.0 ;
n= 10 ;
do
{ s = s+ 1/n ;
n-- ;
} while (n>1) ;
printf(“%6.4 f \n”,s );
}
运行结果,
正确
错误所在,
错误
应改为,
4,下面程序的功能是用辗转相除法,求两个正整数的最大公约数。
main()
{ int r,m,n ;
第一部分 C语言程序设计上机指导
·31·
·31·
scanf(“%d%d”,&m,&n);
if (m<n)
{r=m ; m=n; n=r ; }
r = m%n ;
while( r )
m = n ;
n=r ;
r = m%n ;
printf(“n=%d\n”,n );
}
运行结果,
正确
错误所在,
错误
应改为,
四、写程序
1,编写一个程序,显示ASCII码65~122(十进制)的字符表,控制一行输出10个字符。
2,小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过g11282,g2460g3822吃了一块,
第二天g2460将g2109下的巧克力吃g6493一半,g2460g3822吃一块,以后每天g18129吃了g2081一天g2109下的一半g19658一块。到第10天g1889g5831吃时,g2494g2109下一块了。编程计算小明妈妈g5647g1861给小明买了g3822g4581块巧克力g731
3,小明g1182g519212g4693,他母g1158g8616他大26g4693,编写一个程序计算出他母g1158在g1972g5192后g8616他的
g5192g21848大一g1505,g18039时他g1216两g1166的g5192g21848各g3822g4581g4693g731
4,一个正整数g9943的和是5的g1505数,g9943的g5058是6的g1505数,编写一个程序求符g2524g7477g1226
的最小数。