实验四

  • 格式:doc
  • 大小:1.38 MB
  • 文档页数:11

实验四 循环结构的程序设计

一、实验目的和要求

1. 掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。

2. 学习循环结构的嵌套使用。

3. 掌握分支与循环综合程序的编写方法;

4. 学习并熟悉break、continue的区别与使用。

二、实验内容和步骤

程序练习

【练习1】程序分析题,阅读下列程序,写出程序的运行结果

1.

int main()

{

char c1,c2;

for(c1='0',c2='9';c1

cout<

cout<

return 0;

}

2.循环嵌套

int main ( )

{

int i , j, s=0;

for (i=1; i<=4; i++)

{

for( j=1; j<=i; j++)

s=s+1;

}

cout<<”s=”<

return 0; }

3.

int main()

{

int number=729,digit;

do

{

digit=number%10;

number=number/10;

cout<

} while(number>0);

cout<

return 0;

}

【练习2】程序填充题。将下面的程序补充完整,建议在上机时进行检验。

1.输出1000以内能被3整除且个位数为6的所有整数。

#include

using namespace std;

int main()

{

int i, j; for (i=0;__i<=1000_______; i++) // (1)

{

j=i*10+6;

if (j%3!=0) ___continue_________; // (2)

cout<

}

cout<

return 0;

}

2.输入10个整数,找出最大数。

#include

using namespace std;

int main()

{

int k,x,max;

cin>>x;

max=___0__; // (1)

for(k=2; k<=_12__ ; k++) // (2)

{

cin>>x;

if (___x>max____) max=x; // (3)

}

cout<<“Max=“<

return 0;

}

3.从键盘输入20个整数,输出它们的和。

#include

using namespace std;

int main()

{

int a,sum=0;

for (int i=1;i<=20;__i++______) // (1)

{

cin>>a;

sum=__sum+a____; // (2)

}

cout<<”sum=”<

return 0;

} 上机实践题

1. 求1000以内所有偶数的和

要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。

算法:累计求和

源程序:

#include

using namespace std;

int main()

{int i,sum;

sum=0;

{for( i=0;i<=1000;i+=2)sum=sum+i;}

cout<<"sum="<

return 0;

}

#include

using namespace std;

int main()

{

int i=1,sum=0;

while(i<=1000)

{sum=sum+i;

i++;

}

cout<<"sum="<

return 0;

}

#include

using namespace std;

int main()

{int i=0,sum=0;

do

{sum=sum+i;

i+=2;

}

while(i<=1000);

cout<<"sum="<

return 0; }

运行结果:

【拓展】

1.1 求积1*2*3……*20 //注意存储问题

1.2 求和1/1+1/2+1/3……1/50 //注意数值问题

1.3 求和1/2-2/3+3/4-…+19/20 ——要累加的值一正一负倒腾

1.4 有一个分数数列 2/1,3/2,5/3,8/5,13/8,……,求该数列的前20项之和。

提示:找到规律项,累加

1.1

#include

using namespace std;

int main()

{int i;

double d=1;

for(i=1;i<=20;i++)

d=d*i;

cout<<"d="<

return 0;

}

1.2

#include

using namespace std;

int main()

{double i;

long double d=0;

for(i=1;i<=50;i++)

d=d+(1/i);

cout<<"d="<

return 0;

}

1.3

#include

using namespace std;

int main()

{double i;

double d=0;

for(i=2;i<=20;i++)

{

if(i/2==0)

d=(i-1)/i+d;

else d=-(i-1)/i+d;

}

cout<<"d="<

return 0;

}

我 #include

using namespace std;

int main()

{double i;

long double d=0,m=1,k=1;

for(i=1;i<=20;i=k)

{k=k+k/m;

m=k/i;

d=d+m;}

cout<<"d="<

return 0;

}

我的总结:

这些题目虽然多,比较复杂,但是只要找到规律,所有问题就迎刃而解!

2. 输出所有的“水仙花数”, “水仙花数”即指一个3位数,其各位数字的立方和等于该数本身。如:153是一个水仙花数,因为153=13+53+33。

提示:穷举法。

 循环来查找结果的方法我们称为穷举法。

 使用循环语句教它如何猜测,更确切地说是教它如何找到即把所有可能的结果都去试试看,如果哪个能对上号了,就是我们所要的答案。但是在使用它的时候我们要注意严密性,如果自己考虑时漏掉了可能的结果,那么电脑自然不会猜出完美的答案来。穷举法在程序设计中使用十分广泛,甚至很多人脑难以解决的问题,它都能很快地给出答案。

源程序:

#include

using namespace std;

int main()

{int i,j,k,a;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

{

a=i*100+j*10+k; if(a==i*i*i+j*j*j+k*k*k) cout<<"a="<

}

return 0;

}

运行结果:

我的总结:

这一题比较简单,只要考虑三种循环就可以得出结果。

3. 输入一行字符,直到回车换行符为止。分别统计出其中英文字母、空格、数字和其它字符的个数。

提示:因为统计空格,所以用getchar()函数。

源程序:

#include

using namespace std;

int main()

{int a=0,b=0,c=0,d=0;

char ch;

for(;(ch=getchar())!='\n';)

{

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

a+=1;

else if(ch>='0'&&ch<='9')

b+=1;

else if(ch==' ')

c+=1;

else d+=1;

}