循环

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”),起到观察程序运行位置的作用即可。

以上是关于循环的主要内容,如果未能解决你的问题,请参考以下文章

AVKit – 视频片段仅循环 2 次

如何使用事件侦听器来加载动画片段的循环

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

创建自己的代码片段(CodeSnippet)

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始

codeblock代码片段