实验四
- 格式: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;
}