while(表达式){
循环体语句;
}
当表达式为真时运行循环体语句。
练习4-3序列求和(1-1/4+1/7-1/10+1/13...),输入一个正实数eps,精确到最后一项的绝对值小于eps,计算序列1-1/4+1/7-1/10+1/13...的值。
#include4.2 4.2.2 do-while语句#include int main(void){ int n; double eps,result,item,flag; n=1; result=0; flag=1.0; item=1; printf("输入eps的值:"); scanf("%lf",&eps); while(fabs(item)>=eps){ item=1.0/(3*n-2); result=flag*item+result; flag=-flag; n++; } printf("结果为%.6f",result); return 0; }
do{
循环体语句;
} while(表达式);
与for和while语句不同的是,do-while是先执行后判断,至少会执行一次循环体语句;而for和while语句是先判断后执行
练习4-4将例4-3中do-while语句改为while语句,是否会影响程序的功能?为啥?再增加一条什么语句,就可以实现相同的功能?
答:是,因为当输入的值为0时,更改后的程序count++将不会执行,会导致count的值与源程序不一致。
增加语句:在while前加do里面包含的语句就可以。
4.3 4.3.2 break 语句和 continue 语句break语句之前用到过,continue语句和break用法上相同
不过,不同的是break是终止循环,而continue是跳过后面语句并且继续下一个循环
且break可用于swith语句中
练习4-6猜数字游戏,先输入2个不超过100的正整数,分别是被猜数mynumber和允许猜测的最大次数n,再输入你所猜的数yournumber,与被猜数mynumber比较,相等则猜中,不相等则显示与被猜数的大小关系,最多允许猜n次。若一次猜中则显示"Bingo!",若三次以内猜中则显示"Lucky You!",若超过三次但不超过n次猜中,则显示"Good Guess!",若超过n次都没猜中,或者在达到n次之前用户输入了一个负数,则显示"Game Over!",并结束程序。
#includeint main(void){ int mynumber,yournumber,n,count=1; printf("mynumber:"); scanf("%d",&mynumber); printf("n:"); scanf("%d",&n); while(count<=n){ printf("yournumber:"); scanf("%d",&yournumber); if(yournumber<0){ printf("Game Over!"); break; }else if(yournumber==mynumber){ if(count==1){ printf("Bingo!"); break; }else if(count<=3){ printf("Lucky you!"); break; }else{ printf("Good Guess!"); break; } }else{ if(count>=n){ printf("Game Over!"); break; }else{ if(yournumber 4.4 4.4.2 嵌套循环 (就是循环里面套循环。通俗来说:套娃。)
练习4-7求e的值:输入1个正整数n,计算下式的前n项之和(保留四位小数),要求使用嵌套循环。
#includeint main(void){ int i,j,n,temp; double e=1; printf("正整数n为:"); scanf("%d",&n); for(i=1;i<=(n-1);i++){ //因为第一项是1,而不是1/1!,所以要n-1 temp=1; for(j=1;j<=i;j++){ temp=temp*j; } e=e+1.0/temp; } printf("e=%.4f",e); return 0; } 这个星期先到这里吧,学习有点忙,
又加上小长假(bushi),剩下的习题下个礼拜补上!国庆快乐~~拾拾拾
整理自书籍《C语言程序设计》
如有错误,欢迎纠正!



