知识点汇总及必练习题:循环控制
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
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”。
输出
Pass
输出
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");
}
题目描述
KiKi想知道一个整数的奇偶性,请帮他判断。从键盘任意输入一个整数(范围-231~231-1),编程判断它的奇偶性。
输入描述
多组输入,每行输入包括一个整数。
输出描述
针对每行输入,输出该数是奇数(Odd)还是偶数(Even)。
示例1
题目解析
判断一个整数的奇偶性可以对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
输出
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.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语言小白抑或是“老司机”,都能在本刊中有所收获。 本专刊购买后即可解锁所有章节,故不可以退换哦~
