一、if与while的区别
在C语言中,有三大结构,分别是顺序、选择和循环。在前面的博客文章中,我们解释了if语句的用法,可以参考:C语言(7)------------>if语句-CSDN博客
从文章中,我们知道if语句是用于选择结构中的。那用于循环结构的是什么呢?用于循环结构的有while循环、for循环和do-while循环。今天我们要讲的就是while循环。
while循环和if语句有什么区别呢?
我们来看一段和if语句有关的代码:
#include <stdio.h>
int main()
{
if (1)
printf("hello\n");
return 0;
}
在VS2019中的运行结果:
我们可以知道if后的小括号里面的值为真,那么就执行if语句所控制的语句。
那while循环的语法又是怎样的呢?
实际上,while循环的语法和if语句的语法十分相似。我们从一个例子进行引入:
#include <stdio.h>
int main()
{
while (1)
printf("hello\n");
return 0;
}
在VS2019中的运行结果:
while后面的小括号里面是1,在C语言中我们称非0值为真,那么1就是为真,所以会控制后面的语句。那为什么有这么多的hello呢?这个就和“循环”这个词有关了,循环就是不断重复,然而这里并没有一个停下来的东西,所以它陷入了一个死循环。
从这里我们可以看到C语言中的while循环的语法和if语句的语法是非常相似的,当它后面的小括号,也就是判断条件为真时执行它的控制语句,否则就不执行。它和if不同的是,while会不断进行下去,直到遇到break或者判断条件为假时才退出循环。
在上面的while循环代码加上break之后:
代码:
#include <stdio.h>
int main()
{
while (1)
{
printf("hello\n");
break;
}
return 0;
}
在VS2019中的运行结果:
这时候我们可以看到代码只运行了一个hello,原因是执行了一个hello之后break将使循环强制退出。
二、打印1-10的数字
直到上面的语法后,下面将是一些关于while循环的练习。
练习1:打印1-10的数字。
思路分析:
打印1-10的数字,也就是打印1、2、3、4、5、6、7、8、9、10。
也就是每一次打印的时候,第一步打印一个1,第二次打印一个2,第三次打印一个3.......
大概就是这个意思。那我们如何实现它呢?
对于这种周而复始的问题,,很显然就要使用到循环结构,那我们现在就可以使用while循环。
打印,我们可以使用printf这个库函数,注意引用stdio.h这个头文件就可以了。
不打印10以后的数字,我们可以将while循环的判断条件设置为小于等于10或者小于11。
那如何实现每一次的增加呢?
这里就要使用到自增操作符,对于不知道这个的可以参考我之前的博客:C语言(4)---------->算数操作符、单目操作符与强制类型转换-CSDN博客
讲解完思路之后我们就开始实现:
参考代码:
#include <stdio.h>
int main()
{
int num = 1;
while (num<=10)
{
printf("%d ",num);
num++;
}
return 0;
}
在VS2019中的运行结果:
三、逆序输出数字
练习2:逆序输出数字
例如:
输入:123456 输出:654321
输入:567 输出:765
思路讲解:
我们输入一个数字123,如何得到321呢?
也就是我们得到数字的顺序是3------>2-------->1
那我们怎么做呢?
得到3:我们可以对这个数字对10取模然后得到它的余数3
得到2:我们可以对这个数字123除以10之后得到的数字12保留下来,然后它对10取模就可以得到2
得到1:我们可以对这个数字12除以10之后得到的数字1保留下来,然后它对10取模就可以得到1
对于这种多次使用操作的,我们就可以使用循环结构。可以使用while循环。
那我们如何停下来呢?
我们从上述得到1步骤中可知,当12除以10之后得到1,1对10取模之后就得到了1.此时我们就可以不用再去操作了,那我们如何停下来呢?我们可以按照上面的思路再来一次,如果1除以10呢?就得到了0,这个恰好可以用到判断条件里,0为假不执行while循环控制的语句。
参考代码:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
while (num)
{
printf("%d ",num%10);
num = num / 10;
}
return 0;
}
在VS2019中的运行结果: