知识点汇总及必练习题:循环控制

2.5、循环控制

2.5.1 while语句

C 语言中while循环的语法:

while(condition)
{
   statement(s);
}

表达式为循环条件,语句为循环体,当条件为true时执行循环。 当条件为false时,退出循环。

例子:

#include <stdio.h>
 
int main ( )
{
   /* 局部变量定义 */
   int a = 10;
 
   /* while 循环执行 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
   }
 
   return 0;
}

结果

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19


2.5.2 for语句

C 语言中for循环的语法:

for ( init; condition; increment )
{
   statement(s);
}

下面是for循环的控制流:

1、init会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。

2、接下来,会判断condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着for循环的下一条语句。

3、在执行完for循环主体后,控制流会跳回上面的increment语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。

4、条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

例子:

#include <stdio.h>
 
int main ( )
{
   /* for 循环执行 */
   for( int a = 10; a < 20; a = a + 1 )
   {
      printf("a 的值: %d\n", a);
   }
 
   return 0;
} 

结果

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

2.5.3 do-while语句

C 语言中do...while循环的语法:

do
{
   statement(s);
 
} while( condition );

首先执行循环语句,然后再进行表达式判断,若为真则继续执行循环,若为假,则跳出循环。

条件表达式出现在循环的尾部,所以循环至少会被执行一次。

例子:

#include <stdio.h>
 
int main ( )
{
   /* 局部变量定义 */
   int a = 10;
 
   /* do 循环执行 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
} 

结果

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

2.5.4 goto语句

C 语言中的goto语句允许把控制无条件转移到同一函数内的被标记的语句。

注意:在任何编程语言中,都不建议使用goto语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用goto 语句的程序可以改写成不需要使用goto语句的写法。

C 语言中goto语句的语法:

goto label;
..
.
label: statement; 

例子:

#include <stdio.h>
 
int main ( )
{
   /* 局部变量定义 */
   int a = 10;
 
   /* do 循环执行 */
   LOOP:do
   {
      if( a == 15)
      {
         /* 跳过迭代 */
         a = a + 1;
         goto LOOP;
      }
      printf("a 的值: %d\n", a);
      a++;
 
   }while( a < 20 );
 
   return 0;
}

结果

a 的值: 10

a 的值: 11

a 的值: 12

a 的值: 13

a 的值: 14

a 的值: 16

a 的值: 17

a 的值: 18

a 的值: 19

查看本章更多知识点

https://www.nowcoder.com/tutorial/10002/7ea7c59926404492b8726dd7bc8beb2c?from=Ccz


2.5.5习题库

【习题1】及格分数

题目描述

KiKi想知道他的考试分数是否通过,请帮他判断。从键盘任意输入一个整数表示的分数,编程判断该分数是否在及格范围内,如果及格,即:分数大于等于60分,是输出“Pass”,否则,输“Fail”。

输入描述

多组输入,每行输入包括一个整数表示的分数(0~100)。

输出描述

针对每行输入,输出“Pass”或“Fail”。

示例1
输入
94 

输出
Pass 

示例2
输入
44 

输出
Fail

题目解析

对于有多个条件的判断,我们可以用逻辑运算连接,本题使用逻辑与,并且使用if…else…语法判断了问题的正反面。

参考代码

#include<stdio.h>
int main( )
{
    int a;
    while(~scanf("%d",&a))
        if(a>=60&&a<=100)
            printf("Pass\n");
    else if(a>=0)
        printf("Fail\n");
}

【习题2】判断整数的奇偶性

题目描述

KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。

输入描述

多组输入,每行输入包括一个整数。

输出描述

针对每行输入,输出该数是奇数(Odd)还是偶数(Even)。

示例1

输入
4
输出
Even
Odd

题目解析

判断一个整数的奇偶性可以对2求余来区分。

参考代码

#include<stdio.h>
int main( ){
    int x;
    while(~scanf("%d",&x))
    {
        if(x%2==0)
            printf("Even\n");
        else
            printf("Odd\n");
    }
    return 0;
}

【习题3】衡量人体胖瘦程度

题目描述

在计算BMI(BodyMassIndex,身体质量指数)的案例基础上,判断人体胖瘦程度。BMI中国标准如下表所示。 


输入描述

多组输入,每一行包括两个整数,用空格隔开,分别为体重(公斤)和身高(厘米)。

输出描述

针对每行输入,输出为一行,人体胖瘦程度,即分类。

示例1

输入
80 170
60 170
90 160
50 185 

输出
Overweight
Normal
Obese
Underweight

题目解析

对于不同的条件进行逻辑表述之后,使用if…else if语句表达所有的条件逻辑。

参考代码

#include<stdio.h>
int main( )
{
    int a,b;
    while(scanf("%d%d",&a, &b)!=EOF)
    if(a/((b/100.0)*(b/100.0))<18.5)
        printf("Underweight\n");
    else if(a/((b/100.0)*(b/100.0))>=18.5&&a/((b/100.0)*(b/100.0))<=23.9)
        printf("Normal\n");
    else if(a/((b/100.0)*(b/100.0))>23.9&&a/((b/100.0)*(b/100.0))<=27.9)
        printf("Overweight\n");
    else if(a/((b/100.0)*(b/100.0))>27.9)
        printf("Obese\n");
}

【习题4】简单计算器

题目描述

KiKi实现一个简单计算器,实现两个数的“加减乘除”运算,用户从键盘输入算式“操作数1运算符操作数2”,计算并输出表达式的值,如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。如果操作数2等于0.0,则输出“Wrong!Division by zero!”

输入描述

多组输入,一行,操作数1运算符操作数2(其中运算符号包括四种:+、-、*、/)。

输出描述

1、针对每组输入,输出为一行。

2、如果操作数和运算符号均合法,则输出一个表达式,操作数1运算符操作数2=运算结果,各数小数点后均保留4位,数和符号之间没有空格。

3、如果输入的运算符号不包括在(+、-、*、/)范围内,输出“Invalid operation!”。当运算符为除法运算,即“/”时。  

4、如果操作数2等于0.0,则输出“Wrong!Division by zero!”。



示例1

输入
1.0+3.0 
1.0;4.0
44.0/0.0 

输出
1.0000+3.0000=4.0000
Invalid operation!
Wrong!Division by zero!

题目解析

根据计算器中不同的运算符对应处理对应的运算,对于除法的情况单独进行处理。

参考代码

#include<stdio.h>
int main( )
{
    double a,c;
    char b;
    while(~scanf("%lf %c %lf",&a,&b,&c))
    {
        if(b=='+')
        printf("%.4lf+%.4lf=%.4lf\n",a,c,a+c);
        else if(b=='-')
        printf("%.4lf-%.4lf=%.4lf\n",a,c,a-c);
        else if(b=='*')
        printf("%.4lf*%.4lf=%.4lf\n",a,c,a*c);
        else if(b=='/')
        {
            if(c==0.0)
        printf("Wrong!Division by zero!\n");
            if(c!=0)
        printf("%.4lf/%.4lf=%.4lf\n",a,c,a/c);
        }
        else
   

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C语言入门自学指南 文章被收录于专栏

本专刊由牛客官方团队打造,从一个入门者的角度写下这篇C语言自学指南,内容丰富详实,每一道例题也都是精挑细选,不管是C语言小白抑或是“老司机”,都能在本刊中有所收获。 本专刊购买后即可解锁所有章节,故不可以退换哦~

全部评论

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务