5.1 循环之 while循环和do-while循环

这篇来说一说C语言中的while循环.

内容在书6.1, 6.2章.

1 while循环

1.1 简单小游戏介绍while循环

while的意思就是当,所以while循环的意思就是,当符合条件就执行语句.

下面是一个简单的带while循环的猜数小游戏

int main(void) {
    int input = 0;
    while(input != 5) {
        printf("请输入一个数字,提示:0~10之间."\n);
        scanf("%d", &input);
    }
    printf("正确,答案是5.\n");
    return 0;
}

这是一个猜数小游戏,答案是5.只要用户不输入5,程序就会一直运行下去,直到用户输入5.

可能的运行结果

请输入一个数字,提示:0~10之间.
4
请输入一个数字,提示:0~10之间.
3
请输入一个数字,提示:0~10之间.
10
请输入一个数字,提示:0~10之间.
5
正确,答案是5.

只要while后面的判断一直为真,就会一直执行while循环,直到表达式为.

1.2 解决高斯的100+99+98+....+1问题

高斯是用(100+1)+(99+2)+....+(51+50)解决的,在计算机中不需要这种简便算法,因为现代计算机处理速度极快,这个程序是由用户输入一个值,由程序自动计算从1到这个数的和值.

int main(void) {
	int input;
	int result = 0;
	printf("请输入一个数字,程序将自动计算从1加到这个数的和.\n");
	scanf("%d", & input);
	while(input > 0) {     //先判断再循环
		result += input;
		input--;
	}
	printf("从1加到%d的和为 : %d", input, result);
	return 0;
}
 

执行结果

请输入一个数字,程序将自动计算从1加到这个数的和.
1024
从1加到0的和为 : 524800

1.3 一些注意事项

1.加不加大括号?

在循环体只有一条语句时,可以不加大括号,比如

int main(void) {
	int times = 5;
	while(times > 0)                     //没有大括号
		printf("times = %d\n", times--);
	return 0;
}

运行结果

times = 5
times = 4
times = 3
times = 2
times = 1

2.死循环 

死循环就是一直无法正常退出的循环.下面的程序使用了缩进,但是实际上只有while后面第一条语句属于while循环.

int main(void) {
	int times = 5;
	while(times > 0) 
		printf("times = %d\n", times);
		times--;
	
	return 0;
}

所以运行结果就是

times = 5
times = 5
times = 5
times = 5
times = 5
times = 5
...

不关闭程序就会一直输出"times = 5",成为一个死循环.因为times一直等于5,并没有进行"times--"操作,所以"times>0"恒为真.

 

2 do-while循环

这节内容在书6.8章.

上面的while循环和下一篇要说到的for循环是"入口条件循环",即"每次循环迭代之检查测试条件."(159页),也就是"判断循环".相对的,还有一种"出口条件循环."(159页),即"每次循环迭代之检查测试条件."(159页)的do-while循环.也就是"循环判断".

int main(void) {
	int password;
	int correct = 789456;
	
	do {                            //先循环
		printf("请输入登录密码:\n");
		scanf("%d", &password);
	} while(password != correct);   //再判断
	
	printf("登陆成功.");
	return 0;
}

运行结果

请输入登录密码:
123456
请输入登录密码:
789123
请输入登录密码:
789456
登陆成功.

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值