分支和循环——if语句

文章目录

1.if语句

2.关系操作符

3.逻辑操作符

4.switch语句

5.while循环

6.for循环

7.do——while循环

8.break和continue语句

9.循环的嵌套

10.goto语句


前言

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。

1.if语句

1.1if

语法形式如下:

if ( 表达式 )
 语句

表达式成⽴(为真),则语句执⾏,表达式不成立(为假),则语句不执行,在C语言中,0为假,非0即表示为真。

例子:输入一个整数,判断是否为奇数。

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 return 0;
}

 1.2else

如上,如果一个数不是技术那么便是偶数,这又该如何表示?

这里就用到了else语句,其语法形式如下:

if ( 表达式 )
 语句1
else
 语句2

我们用判断一个数是奇数还是偶数来演示:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 else
 printf("%d 是偶数\n", num);
 return 0;
}

1.3分支中包含多条语句

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
 {
 printf("成年了\n");
 printf("可以学驾照了\n");
 }
 else //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句
 {
 printf("未成年\n");
 printf("不可以学驾照\n");
 }
 return 0;
}

注意 如果if内的语句列表只有一条 可以省略{} 但是如果包含多条语句 就必须包含{}

所以不管是一条语句还是多条语句都加上{}是最好的

1.4嵌套if

在if——else语句中,else可以与另⼀个 if 语句连用,构成多重判断。

⽐如:要求输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出不 是整数:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
if(num>0)
 {
 if(num%2 == 0)
 printf("偶数\n");
 else
 printf("奇数\n");
 }
 else
 {
 printf("输⼊的值是负数\n");
 }
 return 0;
}

其中

                                               为嵌套的if语句

以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

练习: 输⼊⼀个⼈的年龄 如果年龄<18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁以上打印"⽼寿星"

参考:

#include.<stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age<18)
 printf("少年\n");
   else if(age<=44)
 printf("⻘年\n");
   else if(age<=59)
 printf("中⽼年\n");
  else if(age<=90)
 printf("⽼年\n");
  else
 printf("⽼寿星\n");
 return 0;
}

1.5悬空else问题

如果有多个if 和 else可以记住这样⼀条规则,else 总是跟最接近的 if 匹配。

看下面的代码

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
 if(b == 2)
 printf("hehe\n");
 else
 printf("haha\n");
 return 0;
}

结果为空,即无输出

上面的代码排版,让 else 和第⼀个 if 语句对齐,让我们以为 else 是和第⼀个if匹配的,当 if 语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if 进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不 成⽴,嵌套 if 和 else 就没机会执行了,最终啥都不打印。

这样看更清晰:

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
 {
 if(b == 2)
 printf("hehe\n");
 else
 printf("haha\n");
 }
 return 0;
}

若要使else与第一个if匹配,可改为:

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
 {
 if(b == 2)
 printf("hehe\n");
 }
 else
 {
 printf("haha\n");
 }
 return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值