循环
Posted _在远方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环相关的知识,希望对你有一定的参考价值。
if语句可以判断条件是否满足,条件满足则执行相应动作;循环语句可以在满足条件时,不断地重复执行某些动作。
循环语句可以多次执行其他语句,它会检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。
while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。
do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
编写一个判断数字位数的程序:
#include <stdio.h> int main() { int n = 0; int x; printf("输入要判断的数字"); scanf("%d",&x); n++; x /= 10; while(x > 0){ n++; x /= 10; } printf("%d",n); return 0; }
上述程序最大支持查询10位数字的位数查询。
if(条件){语句}当括号内条件满足时执行语句。while语句只需要将if语句的关键字换成while即可。
if语句中是一次性的,while是需要反复执行的。
while循环流程图:
循环体内要有改变条件的机会,否则程序将一直在循环体中循环执行下去。
(防止语法正确逻辑错误的情况)。
while循环的意思是:当条件满足时,不断重复执行循环体内的语句。
在进入while循环之前先判断条件,如果条件不满足,就不会进入循环体。
验证程序
列出程序中所有变量,通过模拟计算机程序运算,计算每一个步骤执行后各变量的值。
上述判断数字位数的程序中,是否可以将while语句之前的"n++"和"x /= 10"省略掉呢:
#include <stdio.h> int main() { int n = 0; int x; printf("输入要判断的数字"); scanf("%d",&x); while(x > 0){ n++; x /= 10; } printf("%d",n); return 0; }
通过计算运行可以得出结论,可以省略掉while语句前和循环体中相同的语句。
但是两段程序都不能有效解决x的值为0时的情况。即给x赋值0,0应该是1位数,但程序输出值为0。
#include <stdio.h> int main() { int n = 0; int x; printf("输入要判断的数字"); scanf("%d",&x); if (x > 0) { while(x > 0){ n++; x /= 10; } }else{ n=1; } printf("%d",n); }
当x输入0时,输出结果为1。
可以在程序的适当位置插入printf输出一些变量的值,模拟debugging的过程。(某些复杂程序交互中debugging不一定能开出来)
#include <stdio.h> int main() { int n = 0; int x; printf("输入要判断的数字"); scanf("%d",&x); if (x > 0) { while(x > 0){ n++; x /= 10; printf("n的值为%d x的值为%d\\n",n,x); } }else{ n=1; } printf("%d",n); }
输入要判断的数字2541264 n的值为1 x的值为254126 n的值为2 x的值为25412 n的值为3 x的值为2541 n的值为4 x的值为254 n的值为5 x的值为25 n的值为6 x的值为2 n的值为7 x的值为0 7
输入要判断的数字4 n的值为1 x的值为0 1
也可以在程序中插入一些变量以及printf输出该变量值以便于观察到程序运行到的位置
#include <stdio.h> int main() { int n = 0; int x; printf("输入要判断的数字"); scanf("%d",&x); int hr = 0; if (x > 0) { while(x > 0){ hr++; printf("hr%d\\n",hr); n++; x /= 10; printf("n的值为%d x的值为%d\\n",n,x); } }else{ n=1; } printf("%d",n); }
输入要判断的数字952 hr1 n的值为1 x的值为95 hr2 n的值为2 x的值为9 hr3 n的值为3 x的值为0 3
也可直接printf(“hr\\n”),起到观察程序运行位置的作用即可。
以上是关于循环的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围