好了,我们接着学习循环性语句,一看,为何要学循环腻?那是因为我们运行程序时无时无刻都在使用着循环,若程序员使用循环不当,则可能会导致死循环和循环占用用户电脑内存,所谓死循环,不一定是坏处,适当运用死循环也会为我们实现一些很好的效果,分别为:条件=逻辑值为真或表达式为真
while(条件) { 循环体 ; }
do { 循环体 ; }while(条件) ;
for(初始值;条件;更改变化量) { 循环体; }
我的印象里还有个“do loop”好像是个死循环,有许多程序员都要求删除该语句,,莫非是真滴删除了?,咱也不用管那么多,先学会上述三条语句,再拓展其他知识。
我们先用第一条,来计算1+2+3+4+5+6+……+98+99+100,我们求100以内的正整数之和,代码如下:
#include<stdio.h> int main() { int sum=0,i=1; while(i<=100) { sum = sum + i; i++; } printf("%d\n",sum); return 0;//返回值可写可不写,这里截图我忘写了,,不影响,只影响规范性 }
调试截图:正确结果5050,和那个“数学王子-高斯”算的一样。
接下来我们用第二条循环代码试试看,代码如下:
#include<stdio.h> int main() { int sum=0,i=1; do { sum = sum + i; i++; }while(i<=100); printf("%d\n",sum); return 0;//返回值可写可不写,这里截图我忘写了,,不影响,只影响规范性 }
调试截图:我们发现二者好像并没有什么区别,
接下来,我来给大家解释一下二者的区别,前者(满足条件或逻辑值为真则执行循环体),而后者(第一遍不需要管条件,先执行一遍后判断条件是否满足或逻辑值是否为真),因此,我们使用第二条循环语句”do while();”时能保证我们的循环先执行一次。
代码如下:
#include<stdio.h> int main() { int i; scanf("%d",&i); while(i>1) { printf("%d\n",i); i++; } return 0;//返回值可写可不写,这里截图我忘写了,,不影响,只影响规范性 }
我们解释一下代码,输入变量i的初始值为1,然而我们的循环必须是i>1时才能启用,所以我们用”while()”语句不能达到我们想要的结果,
调试截图如下:
所以,我们可以使用”do while();”来实现上述上条循环不能实现的作用,
代码如下:
#include<stdio.h> int main() { int i; scanf("%d",&i); do { printf("%d\n",i); i++; }while(i>1); return 0; }
调试截图:“do while();”语句成功实现,因为它是 先执行,再判断。执行完第一遍后,i=2,所以刚好满足了下面“while();”的条件为真
上述这两条循环语句腻,我们都不经常使用,我们经常使用第三条语句”for()”语句,因为它相对于前两条语句来说,比较明了,清晰,它能一眼看出来控制循环的变量是如何变化的。例如,我们用”for()”循环来计算100以内的和(就是上述两个循环都解决的问题),
代码如下:在“for(定义变量并赋值;条件或逻辑值;控制循环的变量的变化)”
#include<stdio.h> int main() { int sum=0; for(int i=1;i<=100;i++) { sum = sum + i; } printf("%d",sum); return 0; }
调试截图:
代码可以这样写:“for(对初始值赋值;条件或逻辑值;控制循环的变量的变化)”
#include<stdio.h> int main() { int sum=0,i; for(i=1;i<=100;i++) { sum = sum + i; } printf("%d",sum); return 0; }
调试截图:
同时代码也可以这样写:“for(空;条件或逻辑值;空)”
#include<stdio.h> int main() { int sum=0,i=1; for(;i<=100;) { sum = sum + i; i++; } printf("%d",sum); return 0; }
调试截图:
对此,我们一般才用,第一种写法,因为这样比较美观,“for(;;)”循环语句比较灵活,通常作为我们编程是经常使用的循环语句。
小结
要注意“if()”“switch()”“while()”“for(;;)”这些小函数语句后方没有结束符号分号“;”,这点大家要记清楚,这里很容易出错。
注意“switch(数据)”中 “case 对应数据:事件;” 要记得,”case”后面是 空格+对应数据+英文冒号+相应事件;
注意,”if()”和”else”是一一对应的。
注意区分“while()”和“do while();”的区别,前者是 先判断,后执行。后者是 先执行一遍,后判断。
更注意,“for(;;)”循环语句的小括号中,是分号“;”相连接的,很多人都会自然而然的写成 逗号“,”导致程序编译时出错。
习题
1.用户输入两个数值,要求 程序自动比较数值大小并由大向小的输出出来。(代码)
2.用户输入两个数值,要求 程序自动比较数值大小并由大向小的输出出来,并求出这两个数值的差的绝对值。(代码)
3.计算1000以内的和(1+2+3+4+5+6+……+999+1000),并将结果输出出来。(代码+输出内容)
4.计算下方代码的输出结果。(输出内容)
#include<stdio.h> int main() { int sum=0; for(int i=0;i<6;i++) { sum=sum+i; if(sum>5) { sum+=1; printf("i=%d sum=%d\n",i,sum); } } return 0; }
参考答案在下一页。
评论1