实验七 循环结构程序设计(二)
实验七 循环结构程序设计(二)
【实验目的】
1.熟练掌握do-while循环语句的使用。 2.学会确定循环条件和循环体。
3.掌握while循环语句和do-while循环语句的区别。
【实验内容】
一、试着编写下列程序
【例7-1】求1+3+5+7+。。。。。。+n的和。 源程序:
#include \main()
{
int i=1,n,sum=0; printf(\ scanf(\ do {
sum+=i; i++;
}while(i<=n); /*先执行一次循环体,在判断循环终止条件*/ printf(\} 运行结果: sum=15,i=6
?举一反三
【7-1】求1?
13?15?17?.......1n的值。
29
实验七 循环结构程序设计(二)
?提示:n为任意的一个正整数。
【例7-2】输入一个整数,求它的位数。例如,123的位数是3。 源程序:
#include \main() {
int i=0,n;
printf(\ scanf(\ do {
n=n/10;
i++; /*i用来统计位数*/
}while(n); /* while(n)等价于while(n!=0)*/ printf(\}
?举一反三
之和是12。
【7-2】输入一个整数,求它的位数以及各位数字之和。例如,345的位数是3,各位数字
??
试着用do-while循环编写实验六中的程序
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。 1、输入一个正整数n,再输入n个整数,输出最小值。 源程序:
#include \main() {
int i=1,n,min,x;
printf(\ scanf(\
30
实验七 循环结构程序设计(二)
scanf(\ min=x; do {
/********found********/
if(min scanf(\ i++; /********found********/ }while(i>n); printf(\} 2、 从输入的正整数中选5个数进行输出,要求这些数都是5的倍数。 源程序: main() { int a,i=0; scanf(\ do {/********found********/ if(i!=5&&a%5=0) {printf(\ i++;} scanf(\ /********found********/ }while(i>0); } 三、程序填空 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 1、根据下述公式求?值 ?/2=1+(1/3)+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+??直到最后一项的值小于任意一个小数为止。 源程序: #include 31 实验七 循环结构程序设计(二) double s=0.0,t=1.0,eps; int n=1; scanf(\do { s=s+t; t= 【1】 ; n++; }while(t>=eps); printf(\} 2、下面程序的功能是计算正整数2345的各位数字之和。 源程序: main() { int n=2345,sum=0; do { sum=sum+ 【1】 ; n=n/10; } while(n); printf(\} 3、从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。s中的数为:7654321时,t中的数为:7531。 源程序: main() { long s, a,i=1,t=0; scanf(\do { a=s; s= 【1】 ; t=a*i+t; i= 【2】 ; } while(s) printf(\} 32 例如:当 实验七 循环结构程序设计(二) 【思考题】 分析下列两个程序的输出结果,结果为何不同? 程序一: #include \main() { int i=6,sum=0; while(i<=5) { sum+=i; i++; } printf(\} 程序二: #include \main() { int i=6,sum=0; do { sum+=i; i++; } while(i<=5); printf(\} 33