【C语言】以深厚地基筑伟岸高楼-基础篇(六)

这篇博客介绍了如何利用循环(while和do-while)来计算输入数字的位数,重点比较了两种循环结构的使用场景和差异。通过实例代码展示了如何优化if语句,使用while循环解决问题,并进一步使用do-while循环实现相同功能,强调了do-while循环至少执行一次的特点。
摘要由CSDN通过智能技术生成

引入循环概念

来看一个小题目

计算输入数字的位数(4位数及以下的正整数):

#include <stdio.h>
int main()
{
	int number,n;
	printf("判断数的位数,限制四位最高,请输入一个数字:");
	scanf("%d", &number);
	if(number>999){
		n = 4;
	}else if(number>99){
		n = 3;
	}else if(number>9){
		n = 2;
	}else if(number>0){
		n = 1;
	}
	printf("这个数的位数为:%d", n);
	return 0;
}

这样一个代码就能够实现我们的目的。补充知识:== 计算机在运行程序的时候是按步骤来运行的 ==。
所以如果我们仅仅使用if语句来写这个问题的话,凡是写成下边这个样子的,都是不知道上边这一句话的含义。

#include <stdio.h>
int main()
{
	int number,n;
	printf("判断数的位数,限制四位最高,请输入一个数字:");
	scanf("%d", &number);
	if(number>999){
		n = 4;
	}
	if(number>99){
		n = 3;
	}
	if(number>9){
		n = 2;
	}
	if(number>0){
		n = 1;
	}
	printf("这个数的位数为:%d", n);
	return 0;
}

** 这个代码就是错误示范 **这个代码凡是输入4位数,它的输出结果都是1。
这个题目仅仅是问了4位数以下的,那么,任意范围的数,该怎么办呢?我们需要无限的写if-else语句吗?
并不需要无限的去重复这个单一的代码。
我们只需要一个可以重复做这件事的代码就可以了。

我们需要一个循环

什么是循环呢?循环就是一件事不断的重复的做。那让我们来看看我们接触的第一个循环,while循环

while 循环

循环主体:
while(<循环条件>){
……
……
}
while 循环呢,就是一个事情重复做,那么我们实现上边这个代码需要怎么做呢?我们需要重复对接收的整数进行除以10的行为。
那么代码该怎么写呢?
首先
我们需要让用户输入一个数字,并且我们有地方来储存这个数字,于是我们需要一个scanf以及一个变量:

int x;
scanf("%d", &x);

接下来我们需要对接收到的这个整数进行除以10,并且得到除以10之后的结果,并不断重复这个行为,但是要知道重复的条件,是这个整数大于10,我们用代码来实现一下看看:

x /= 10while ( x>10 ){
x/=10;
}

这样我们就完成了我们重复做除以10的这个目的,但是我们该怎么计算位数呢?
我们需要再来定义一个变量来计算我们接收到的整数除以10的次数,来以此计算该数的位数
于是我们可以这样写:

int x;
int n = 0;

scanf("%d", &x);
n++;
x /= 10;
while ( x>10 ){
	x /= 10;
	n++;
}

于是,我们的主题部分就完成了,
接下来我们需要打印出我们的结果,所以,完整的代码如下:

#include <stdio.h>
int main()
{
	int x;
	int n=0;
	scanf("%d", &x);
	n++;		//这两步必须要有 
	x /= 10;	//因为0这个特殊情况,0的位数为1,0无法进入循环 
	while ( x>0 ){
		n++;
		x /= 10;//"/="含义举例:a/=b 等价于 a=a/b 
	}
	printf("%d\n", n);
	return 0;
}

对于代码中一些细节的小问题,通过注释的方式写在了代码块之中。
这样,这个题目我们就用循环解决了。

小补充:

  • while循环,如果我们把while翻译作“当”,那么一个while循环的意思就是:当条件满足时,
    不断地重复循环体内的语句。
    循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行
    (循环条件不满足,此条件与if语句的条件意思一样。)
    如果我们想看到循环的过程(数字算法循环),那么我们可以在循环中,插入一个printf来打印出
    我们所希望看到的变量!

do-while 循环

do -while 循环主体:
do
{
……<循环体语句>……
}while(<循环条件>);
记住do-while循环在末尾要加分号“ ; ”
结束一个语句,要么是花括号,要么是分号。do-while是先进循环体,再判断条件是否满足。

do-while循环呢,就是:
在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否,满足,
如果满足则继续下一轮循环,不满足则结束循环。
do-while循环和while循环很像,区别是在循环体执行结束的时候才来判断条件。也就是说
,无论条件如何,程序都会执行至少一遍,然后再来判断条件。与while循环相同的是,
条件满足是执行循环,条件不满足时结束循环。

运用do-while语句完成小题目

我们直接来运用一下do-while语句,在运用过程中去理解它
还是上边的那个小题目,让我们用do-while语句来解决它吧
看代码:

#include <stdio.h>
int main()
{
	int x;
	int n = 0;
	scanf("%d", &x);
	do {
		n++;      //do-while语句是先做一遍循环
		x /= 10; //所以这两个语句可以直接放在do-while语句之中
	} while( x>0 );
	printf("这个数的位数是:%d" , n);
	return 0;
}

与while语句的区别很明显的是,我们不需要在将语句

n++;

和语句

x /= 10;

放在循环外边了,这是面对这类问题时,do-while语句比while语句方便理解的一处地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值