1、for循环
一般用于知道循环次数,并且for循环可以节省内存以及代码简洁,在循环语句中定义一个局部变量,循环结束后,局部变量就被释放了。
1 for(int val=0;val<=10;val++) 2 { 3 sum+=val; 4 }
2、while循环
一般用于不知道或者不确定循环的次数,并且通常需要在循环之前定义好变量。
1 int val=0; 2 while(val<=10) 3 { 4 sum+=val; 5 val++; 6 }
两者可以进行等价。
for循环和它的while循环形式的区别?
答:for 循环 中递增变量在循环结束后一般都是不可用的 ,但是在while循环中,递增变量在循环结束后仍然可用。这常常是for循环和它对应while循环的主要区别
在C语言中,共有三大常用的程序结构:
顺序结构:代码从前往后执行,没有任何“拐弯抹角”;
选择结构:也叫分支结构,重点要掌握 if else、switch 以及条件运算符;
循环结构:重复执行同一段代码。
所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99次加法运算。
while循环
while循环的一般形式为:
while(表达式){ 语句块 }
意思是,先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。
我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。
用 while 循环计算1加到100的值:
#include <stdio.h> int main(){ int i=1, sum=0; while(i<=100){ sum+=i; i++; } printf("%d\n",sum); return 0; }
运行结果:
5050
程序解析:
1 . 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。2 . 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。
3 . 重复执行步骤 2 . 。
4 . 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。
while 循环的整体思路:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。
如果循环条件中不包含变量,会发生什么情况呢?
1 . 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。例如:
#include <stdio.h> int main(){ while(1){ printf("1"); } return 0; }
运行程序,会不停地输出“1”,直到用户强制关闭。
2 . 循环条件不成立的话,while 循环就一次也不会执行。例如:
#include <stdio.h> int main(){ while(0){ printf("1"); } return 0; }
运行程序,什么也不会输出。
再看一个例子,统计从键盘输入的一行字符的个数:
#include <stdio.h> int main(){ int n=0; printf("Input a string:"); while(getchar()!='\n') n++; printf("Number of characters: %d\n", n); return 0; }
运行结果:
Input a string:www.baidu.com↙ Number of characters: 13
本例程序中的循环条件为getchar()!=’\n’,其意义是,只要从键盘输入的字符不是回车就继续循环。循环体n++;完成对输入字符个数计数。
do-while循环
除了while循环,在C语言中还有一种 do-while 循环。
do-while循环的一般形式为:
do{ 语句块 }while(表达式);
do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。
用do-while计算1加到100的值:
#include <stdio.h> int main(){ int i=1, sum=0; do{ sum+=i; i++; }while(i<=100); printf("%d\n", sum); return 0; }
运行结果:
5050
注意while(i<=100);最后的分号;,这个必须要有。
while循环和do-while各有特点,大家可以适当选择,实际编程中使用while循环较多。如果感觉不错的话请点赞哟!!!
1、while循环介绍
while循环的一般形式为:
while (表达式) { 语句块 }
意思是,先计算表达式的值,当值为真时(非0即是真),执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真,又执行一次语句块……,这个过程会一直重复,直到表达式的值为假,就不再执行语句块。
循环也常常出现在我们的生活中,以超女选秀为例。
// 超女已准备出场 while (是否有未出场的超女) { // 判断超女的年龄 // 判断超女的身材 // 判断超女的颜值 // 送往后宫 }
超女选秀就是一个循环,是否有未出场的超女是循环首部要判断的条件,它的取值会随着循环次数的增加而改变,判断超女的年龄、判断超女的身材、判断超女的颜值、送往后宫是循环体,随着循环次数的增加,全部的超女已出场,循环体不再执行。
2、循环的跳转
continue和break两个关键字用在循环体中,用于控制循环体代码的执行流程。
continue跳转到循环的首部。
break跳出循环。
以超女选秀为例:
// 超女已准备出场 while (是否有未出场的超女) { // 判断超女的年龄 if (年龄小于16岁) continue; // 判断超女的身材 if (身材不火辣) continue; // 判断超女的颜值 if (颜值不漂亮) continue; // 判断已选出的超女数量,如果已经有10位了,就不要再选了 if (已选出的超女数量等于10) break; } // 送往后宫
超女出场后,先看看身份证上的年龄,如果不够16岁,没到法定年龄,评委就会说直接下一个,即continue,这个不够16岁的小姑娘直接回家。
如果本次选秀的任务是选出10位超女,如果选出的超女已经有10位了,活动结束,即break,没选上的和没出场的直接回家。
3、while循环的应用
利用一个循环,把用户每次从键盘输入的数据累加起来,如果总和超过了5000,循环结束。
/* * 程序名:book31.c,此程序用于演示while循环 * 作者:C语言技术网(www.freecplus.net) 日期:20190525 */ #include <stdio.h> int main() { int times=0; // 记录用户输入数据的次数 int value=0; // 用户每次从键盘输入的数据 int sum=0; // 记录用户输入数据的和 while (sum<5000) // 如果sum的值小于5000,进入循环 { printf("请输入数字:"); // 提示用户输入 scanf("%d",&value); // 接受用户从键盘输入的数据 times++; // 用户输入数据的次数自增1 sum=sum+value; // 记录用户输入数据的和 } printf("您一共输入了%d个数据,和为%d。\n",times,sum); }
运行效果
4、do while循环
do while循环的一般形式为:
do { 语句块 } while (表达式)
do while先执行一次循环,然后再判断表达式的值,如果为真,再执行一次循环体,如此重复下去。
在实际开发中,几乎不用 do while,所以就不讲它了。
4、获取视频教程
百万年薪程序员录制,《C/C++高性能服务开发基础》视频教程已在CSDN学院发布,优惠价12元,地址如下:
https://edu.csdn.net/course/play/294025、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道
如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发此文,让更多的人可以看到它,谢谢!!!
1、for循环
一般用于知道循环次数,并且for循环可以节省内存以及代码简洁,在循环语句中定义一个局部变量,循环结束后,局部变量就被释放了。
1 for(int val=0;val<=10;val++) 2 { 3 sum+=val; 4 }2、while循环
一般用于不知道或者不确定循环的次数,并且通常需要在循环之前定义好变量。
1 int val=0; 2 while(val<=10) 3 { 4 sum+=val; 5 val++; 6 }
两者可以进行等价。
转载于:https://www.cnblogs.com/Dark-King/p/9233769.html