【C语言入门】笔记四 (循环结构上)

4.1

4.1.2 while语句

while(表达式){
    循环体语句;
}

当表达式为真时运行循环体语句。

练习4-3

序列求和(1-1/4+1/7-1/10+1/13...),输入一个正实数eps,精确到最后一项的绝对值小于eps,计算序列1-1/4+1/7-1/10+1/13...的值。

#include <stdio.h>
#include <math.h>
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;
}

4.2

4.2.2 do-while语句

do{
    循环体语句;
} while(表达式);

与for和while语句不同的是,do-while是先执行后判断,至少会执行一次循环体语句;而for和while语句是先判断后执行

练习4-4

将例4-3中do-while语句改为while语句,是否会影响程序的功能?为啥?再增加一条什么语句,就可以实现相同的功能?

不过,不同的是break是终止循环,而continue是跳过后面语句并且继续下一个循环

且break可用于swith语句中

答:是,因为当输入的值为0时,更改后的程序count++将不会执行,会导致count的值与源程序不一致。

增加语句:在while前加do里面包含的语句就可以。

4.3

4.3.2 break 语句和 continue 语句

break语句之前用到过,continue语句和break用法上相同

练习4-6

猜数字游戏,先输入2个不超过100的正整数,分别是被猜数mynumber和允许猜测的最大次数n,再输入你所猜的数yournumber,与被猜数mynumber比较,相等则猜中,不相等则显示与被猜数的大小关系,最多允许猜n次。若一次猜中则显示"Bingo!",若三次以内猜中则显示"Lucky You!",若超过三次但不超过n次猜中,则显示"Good Guess!",若超过n次都没猜中,或者在达到n次之前用户输入了一个负数,则显示"Game Over!",并结束程序。

#include <stdio.h>
int 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<mynumber){
					printf("Too small!\n");
					count++;
				}else{
					printf("Too big!\n");
					count++;
				}
			}
		}
	}
	return 0;
}

4.4

4.4.2 嵌套循环

(就是循环里面套循环。通俗来说:套娃。)

练习4-7

求e的值:输入1个正整数n,计算下式的前n项之和(保留四位小数),要求使用嵌套循环。

e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+...+\frac{1}{n!}

#include <stdio.h>
int 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语言程序设计》

如有错误,欢迎纠正!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值