引入循环概念
来看一个小题目
计算输入数字的位数(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 /= 10;
while ( 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;
while ( x>0 ){
n++;
x /= 10;
}
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++;
x /= 10;
} while( x>0 );
printf("这个数的位数是:%d" , n);
return 0;
}
与while语句的区别很明显的是,我们不需要在将语句
n++;
和语句
x /= 10;
放在循环外边了,这是面对这类问题时,do-while语句比while语句方便理解的一处地方。
|