当前位置:文档之家› 实验三 循环结构

实验三 循环结构

实验三循环结构
一.实验目的
1.熟悉用while语句,do-while语句和for语句实现循环的方法。

2.掌握循环嵌套的用法。

3.掌握在程序设计中用循环的方法实现各种算法(如迭代,递推,穷举等)。

4.掌握break和continue语句的用法。

二.实验要点
在C语言中主要用以下方法实现循环:
1.while语句格式:while (表达式)语句
2.do- while语句格式:do 语句 while (表达式);
3.for语句 for语句的一般格式:
for (表达式1;表达式2;表达式3)语句
for (初值表达式;条件表达式;增值表达式) 语句
三.实验要求
1.上机前编写好以下程序。

2.上机输入和调试自己所编的程序并存在自己的U盘上。

3.检查实验结果是否正确。

4.上机结束后,整理实验报告,以“学号—姓名-第3次实验”命名的文件上传到作业服务器。

四.实验内容
上机调试运行以下程序。

1.下面的程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环.请填空.
#include”stdio.h”
void main(){
int n=0;
char c;
c=getchar();
while (【】)
{ if ( 【】) n++;
c=getchar();
}
printf(“n=%d”,n);}
键盘输入:abcdef12345k<CR>(<CR>表示回车)
输出结果:
2.当运行下面程序时,从键盘输入1 2 3 4 5 –1<CR>(<CR>表示回车)时,输出结果:
#include <stdio.h>
void main()
{
int k=0,n;
do {scanf(“%d”,&n); k+=n;}
while(n!=-1);
printf("k=%d n=%d\n",k,n);
}
3.下列程序是求水仙花数的程序,所谓水仙花数是指一个三位数,其各位数字立方和等于该数。

例如,153是一个水仙花数。

#include <stdio.h>
void main()
{
int i,j,k,n;
printf(" The number is: ");
for(【】;n++)
{
i= 【】;
j=n/10-i*10;
k=【】;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%d\t", 【】);
}
}
}
程序输出结果:
4.下面程序完成把100~120之间的不能被3整除的数输出,并求其和,请填空。

#include <stdio.h>
void main( )
{ int n,sum=0;
for (【】)
{ if (n % 3 == 0)
【】;
sum+=n;
printf(“%d,”, n);
}
printf(“\n sum=%d”, sum);
}
程序输出结果:
5.循环嵌套
下面程序实现逐行打印*号的功能:第一行打印1个*,第二行打印2个*,第十行打印10个*。

#include <stdio.h>
#define N 10
void main ( )
{
int i,j;
for (i=1; i<=N; i++) {
for (j=1; j<=i; j++) printf(“*”);
printf (“\n”);
}
}
参照以上程序,自己编写程序,程序输出以下图形。

**********
*********
********
*******
******
*****
****
***
**
*
作业题:
一.选择题
1.设有程序段
int k=10;
while (k=0) k=k-1;
下面描述正确的是()
A.While循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
2.下面程序的执行结果是()
main()
int x=10;
do {x--;} while( --x);
printf("%d\n",x--);
}
A) 0 B) -1 C) 1 D) 8
3.若j为整型变量,则以下循环执行次数是。

for(j=2;j==0;) printf(“%d”,j--)
A)无限次B)0次C)1次D)2次
4.执行语句for(j=1;j++<4; );后变量j的值是。

A)3 B)4 C)5 D)不定
二.填空题
1.执行下面程序段后,k的值是。

k=1;n=263;
do{k*=n%10; n/=10;} while(n);
2.下面程序段中循环体的执行次数是。

a=10;
b=0;
do{b+=2;a-=2+b;} while(a>=0);
3.若for循环用以下形式表示:
for(表达式1;表达式2;表达式3)语句
则执行语句for(j=0;j<3;j++) printf(“*”);时,表达式1执行次,表达式3执行次。

4.以下程序的功能是打印100以内个位数为6且能被3整除的数。

填空。

#include”stdio.h”
main(){
int j,k;
for(j=0; 【】;j++)
{ k=j*10+6;
if(【】) continue;
printf(“%d”,k);
}
}
5. 本程序的作用是判断year是否闰年,如是闰年则输出“leap year"字样,闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除;②能被4整除,又能被400整除。

请对程序填空(填入一个运算符)。

main( )
{ int year;
scanf("%d",&year);
if((year %4==0___year % 100!=0)___year % 400==0))
printf("leap year");
6. 以下程序的输出结果是____。

main( )
{
int i;
for (i=1;i<6;i++)
{ if(i % 2)
printf("*");
else continue;
printf("&");
}
printf("%\n");
}
书上编程题P140页:4、6、9、10、16
作业补充:
1、计算1+22+333+4444+55555=?共9项之和
2、编程求1+1/4-1/7+1/10+1/13-1/16+ ……共10项之和
2、编程求2/3-3/4+4/5-5/6+6/7-……共50项之和。

3、编程求1+1/4-1/7+1/10+1/13-1/16+ ……共20项之和。

相关主题