【C语言基础考研向】08判断语句与循环语句

简介: 本文介绍了C语言中的关键编程概念:首先解析了关系表达式与逻辑表达式的优先级及计算过程;接着详细说明了`if-else`语句的使用方法及其多分支和嵌套应用;然后讲解了`while`循环与`for`循环的语法和注意事项;最后介绍了`continue`和`break`语句在控制循环中的作用和示例代码。

1.关系表达式与逻辑表达式

算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等,那么表达式5>3&&8<4-!0的最终值是多少?其计算过程如下图所示。
image.png


2.if-else语句

引入:在你打开衣柜拿出最上面的一件衣服时,你会判断这件衣服是不是你想穿的.如果是,那么你就会穿上;如果不是,那么你就会去找其他衣服.在计算机中,我们用 if判断语句来实现这样的效果: if判断条件(表达式)为真,就执行某个语句,反之不执行这个语句.当然,也可以if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句.

当输入值大于0时,打印“i is bigger than 0”,当输入值小于等于0时,打印 "i is not biggerthan 0”,具体代码如下例所示.注意,在这个例子中,if 后面不能加分号,因为如果有else分支语句,那么加分号会导致编译不通过;如果没有else分支语句,那么加分号会导致i无论取何值,都会打印“ i is bigger than o” .

【例】判断输入值是否大于0

#include <stdio.h>
int main() {
   
int i;
while (scanf("%d",&i)){
   
if (i > 0)//不要在括号后加分号
{
   
printf("i is bigger than O\n");
} else {
   
printf("i is not bigger than O\n");
}
}
return O;

if语句和else 语句也可以多个同时使用(多分支语句),但是,无论有多少个if语句或else if语句,程序都只会执行其中的一个语句.下面是一个关于用电量的例子:用电量越高,电的单价越高,但最终cost只会被赋值一次.同时, if 语句也支持多层嵌套,在if 语句中又包含一个或多个if语句称为if 语句的嵌套.

if (number>500)cost=0.15;
else if(number>300)cost=0.10;
else if(number>100)cost=0.075;
else if(number>50)cost=0.05;
else cost=O;

使用if嵌套语句时,要考虑“悬空的else”问题.例如,在下面的例子中, else子句从斥于哪个if语句?

if(i>1)
    if(i<10)
        printf("i>1 and i<10in");
else
        printf("no,they are notin");

和其他绝大多数语言一样,C语言中的else子句从属于最靠近它的不完整的if语句.上.例中的else子句从属于第二个if语句,如果想让它从属于第一个if 语句,那么可以用一个花括号把第二个if 语句包含在一个单独的代码块内,如下所示.

if(1>1){
   
if(i<10)
printf("i>1 and i<10in");
)
else
printf( "no,they are notin");

在f语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误.


3.while循环

引入:while 语句用来实现“当型”循环结构,其一般形式为“while(表达式)语句;”,当表达式的值非0时,执行while 语句中的内嵌语句.其特点是:先判断表达式,后执行语句.当表达式的值非0时,就会执行语句,从而实现语句多次执行的效果.为了避免程序进入死循环(不停地进行循环操作)﹐在语句中需要有让表达式趋近于假的操作来使程序跳出循环.

下面是用while 语句计算1到100之间所有整数之和的例子,如下例所示.注意, while后面不能加分号,否则虽然编译可以通过,但是执行程序时会发生死循环.通常我们会将while语句用花括号括起来,就算while 语句只有一句,也会用花括号括起来,这么做是因为一个程序往往会经过多次修改,使用花括号可以让程序更加清晰,避免向循环内添加语句时出错.

#include <stdio.h>
int main(){
   
int i=1,total=O;
while(i<=100)//不能在while后面加分号
{
   
    total+=i;
    i++;//循环内要有使循环趋近丁假的操作
}
    printf("%d\n",total);
    return 0;
}

4.for循环

C语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while循环语句。其一般形式为

for(表达式1;表达式2;表达式3)语句;

for循环语句的执行过程如下,具体流程如下图所示.
(1)先求解表达式1.
(2)求解表达式2,若其值为真(值为非O) ,则先执行for语句中指定的内嵌语句,后执行第(3)步.若其值为假(值为O),则结束循环,转到第(5)步.
(3)求解表达式3.
(4)转回第(2)步继续执行.
(5)循环结束,执行for语句下面的语句.
在这里插入图片描述
下面来看一个使用for循环语句计算1到100之间的所有整数之和的例子, for循环语句中必须且只能有两个分号,用于分割表达式1、表达式2和表达式3.表达式1、表达式2、表达式3也可省略,省略写法用得较少.如下例所示,“i=1,total=0”是表达式1,即表达式1可以使用逗号初始化多个变量,表达式3的作用是使表达式2趋近于假.

【例】for循环语句实现计算1到100之间的所有整数之和

int main() {
   
    int i,total;
    for(i=1,total=O;i<=100;i++)//在for加分号不会死循环,会结果不对
    {
   
        total+=i;
    }
    printf("%d\n",total);return 0;
}

for循环的可读性要比 while 循环的好,所以能使用for循环时不要强制改为while循环.


5.continue语句

continue 语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断.其一般形式为

continue

下面来看一个对1到100之间的奇数进行求和的例子,如下例所示.这个例子是对上一节中的for循环的改写,执行“continue;”语句后,执行的语句是“i++;”.当continue用于 while和do while 循环中时,注意不要跳过让循环趋近于假的语句.


【例】对1到100之间的奇数进行求和

#include cstdlo.h>
int main() {
   
int i,total;total=O;
for(i=1;i<=100;i++)//在for加分号不会死循环,会结果不对
{
   
    if(i%2==O)
    {
   
        continue;
    }
    total+=i;
}
    printf("%d\n";,total);
    return o;
}

5.break语句

break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立.下例是关于break语句的例子,例子从1开始累加,当累加的和大于2000时,结束 for循环,同时打印此时total的值和i 的值.一旦执行break 语句,下一句要执行的就是“printf("total=%d,i=%d\n" ,total,i);”. break语句也可用在while 循环和do while 循环中,起结束对应循环的作用.
【例】break 语句实例

#include <stdio.h>
lnt main(){
   
int i,total;
total=O;
for(i=1;i<=100;i++)//在for加分号不会死循环,会结果不对
{
   
    if(total>2000)
    {
   
        break
    }
    total+=i;
}
printf("total=%d,I=%d\n",total,i);
return 0;
}
相关文章
|
4天前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
180 87
|
2月前
|
C语言
【C语言】循环语句
C语言中循环语句的相关知识点
29 2
【C语言】循环语句
|
5天前
|
存储 C语言 数据格式
【C语言基础考研向】03混合运算和printf讲解
本文分为两部分。第一部分介绍了C语言中的混合运算与类型强制转换的重要性,通过实例展示了当整型数进行除法运算且结果为小数时,必须使用类型转换才能正确存储浮点数结果。第二部分详细讲解了`printf`函数的功能与使用方法,包括格式化输出不同类型数据的基本语法,并通过具体示例演示了如何利用字段宽度和对齐方式来控制输出格式,帮助读者更好地理解和掌握输出格式的控制技巧。
21 10
|
5天前
|
C语言
【C语言基础考研向】05 scanf读取标准输入超详解
本文详细解析了C语言中`scanf`函数的工作原理及常见问题。首先介绍了`scanf`如何处理标准输入,并通过示例说明了为何有时会出现阻塞现象及其解决办法。接着探讨了当输入包含多种数据类型时,特别是字符型数据的处理方式,强调了格式控制的重要性,并给出了正确的输入格式示例。通过正确配置,可以避免因空格和换行符导致的问题,确保数据准确读取。
22 10
|
5天前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
40 10
|
5天前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
5天前
|
存储 C语言
【C语言基础考研向】04整型进制转换
本文介绍了计算机中整型常量的不同进制表示,包括二进制、八进制、十六进制和十进制,并解释了它们之间的转换方法。以一个32位整型数为例,展示了其在不同进制下的表示形式及计算方法,特别指出在内存观察中常用十六进制,同时提到了小端存储方式对数据的影响。
|
5天前
|
存储 编译器 C语言
【C语言基础考研向】07逻辑运算符与赋值运算符
本文介绍了C语言中的逻辑运算符与逻辑表达式、赋值运算符以及求字节运算符`sizeof`。逻辑运算符包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),其优先级规则与数学运算符类似。通过示例展示了如何用这些运算符判断闰年及逻辑非的运算方向。此外,文章还解释了左值与右值的概念及其在赋值运算中的应用,并介绍了复合赋值运算符的使用方法,如加后赋值`+=`和乘后赋值`*=`。最后,通过`sizeof`运算符示例展示了如何获取变量的字节大小。
|
5天前
|
存储 编译器 C语言
【C语言基础考研向】09 一维数组
数组是一种有序集合,用于存储相同类型的数据,便于统一操作与管理。例如,将衣柜底层划分为10个格子存放鞋子,便于快速定位。在C语言中,数组定义格式为 `类型说明符数组名[常量表达式];`,如 `int a[10];` 表示定义了一个包含10个整数的数组。数组初始化时可以直接赋值,也可以部分赋值,且数组长度必须固定。数组在内存中连续存储,访问时需注意下标范围,避免越界导致数据异常。数组作为参数传递时,传递的是首地址,修改会影响原数组。
|
5天前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。

热门文章

最新文章

相关实验场景

更多