C语言中的while循环语句示例详解
作者:钟爱陈奕迅
日常生活中除了选择之外,还有很多循环做的事情,比如说三点一线的生活,日复一日的工作,每天都在重复着一样的事情,这就是循环,那么C语言中的循环语句是什么样的呢,开始今天的分享。
while循环
基本语法格式
while(表达式) { 语句; }
还是使用一个代码来解释while循环的执行过程:
switch(表达式) { case 常量1:语句1 case 常量2:语句2 default:语句n break; }
通过代码可以看到,表达式i<=10在i==1的情况下判断为真,所以循环体中的语句执行,最后打印出1-10,那么我们可以知道,当表达式为真时,while循环才会执行,当表达式为假,循环则不会执行。那么如果表达式是一个非0的数,循环会不会一直执行呢?
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { while (1) { printf("a"); } return 0; }
通过运行结果可以看到,当表达式为1时,while循环会一直执行循环体,也就变成了一个死循环。
while循环中的break;
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 1; while (i<=10) { printf("%d\n", i); if (i==5) { break; } i++; } return 0; }
通过前面的代码我们知道这个代码是用于打印1-10,那么如果在i==5的时候加入break,会发生什么呢?
可以看到当加入了break之后,当执行到i==5时,后面的循环并没有执行,那么可以理解为break语句的意思是终止循环。
while循环中的continue语句
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 1; while (i<=10) { if (i == 5) { continue; } printf("%d\n", i); i++; } return 0; }
上面我们知道了break的作用,那么continue和break有什么区别呢,通过运行结果可以看到,当输出到4时,代码进入了一个死循环,而不是像break一样终止,这是为什么呢?我来解释一下,continue的意思为继续,当代码执行到continue时,会跳过本次循环而继续下一次,从代码中看到,当i==5时,循环跳过,那么i++不会执行,i的值就不会改变,那么i==5回到表达式判断5<10,进入循环,那么这个时候i==5就又会触发continue,然后i++又不能执行,就造成i的值一直为5,一直跳过,就成了一个死循环。
那么while循环的基本信息我们知道了,我们来实现一下下面两个问题。
第一:用户输入一个数字,求该数字所拥有的位数之和。
那么从题目中可以知道,一个数可能会有很多位数,所以只计算一次是不行的,就需要循环计算,并且,求位数之和就需要将数字每个位数分开进行相加,知道了这些,那我们来具体实现一下。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int numb;//定义一个int类型的整数 int sum = 0;//定义一个int类型的变量用于接受位数之和 printf("Please input\n");//让用户输入 scanf("%d", &numb);//接受用户输入的整数 while (numb!=0) { sum += numb % 10;//将整数的位数分离并加在sum中 numb /= 10;//将已经计算过的位数去除 } printf("该数的位数之和为%d\n", sum);//输出sum的值 return 0; }
写这种代码之前呢我们需要举例进去算一下,那么我就以123为例子,当输入的numb为123时,要计算1+2+3,要将每一位数分离,那么先将个位数分离,那么123/10的余数便是个位数3,这时我们就得到了个位数3,将3加进sum里面,那么3已经加完了,就要将3去掉,那么123/10的商为12便将3去掉,重复执行这个结果,当最后只剩1时,1/10为0,所以循环结束,那么如果位数不止为3位呢,即使这个数为n位,将最高位/10也一定为0,那么当计算到最高位时,相加已经完成,所以最高位/10为0便是循环条件,如果分离出来的数值/10不为0,说明至少有两位以上的数值没有分开,所以循环条件为numb==0。
第二个,这个代码非常的好玩并且有意思,要输出下面的图片
那么这个代码要怎么写呢,我们可以看到,最开始输出*号,然后每一次输出用一个字符代替*号,最后输出一个I Love You。那么我们可以将*好和字符串各自定义为一个字符类型的数组,每一次输出时将数组1的最左值用数组2的最左值替换,同样最右边也是一样。那么数组中的值通过下标调用,下标从0开始,每替换一次下标要加1,知道了这些,我们就可以实现代码。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { char arr1[] = "I Love You"; char arr2[] = "************"; int left = 0; //int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//[a,b,c,\0] int right = strlen(arr2)-1;//右下标 printf("%s\n", arr2); printf("\n"); while (left<right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; left++; right--; printf("%s\n", arr2); printf("\n"); } return 0; }
那么每次替换数值时,左标都会加1,右标都会减1,总会有一次两者相等,那便是最后一个字符替换,所以循环条件为left<right。
以上就是今天的所有内容,那么屏幕前的你们对while循环是否也有一定的理解了呢。
到此这篇关于C语言中的while循环语句的文章就介绍到这了,更多相关C语言while循环语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!