一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)

举报
光之梦 发表于 2023/10/15 16:19:51 2023/10/15
【摘要】 我的目标是:用通俗易懂的口语来为大家带来我自己对C语言基础语法的理解,想让零基础小白也能看懂学会并且能够掌握C语言的基础语法

我的个人主页光之梦的博客_云社区-华为云 (huaweicloud.com)

欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,我会第一时间改正。非常感谢!

初学者推荐用的刷题网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com)

特别标注本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。关注博主,学习不迷路哦

一、if 语句的基本结构

if (条件成立){              

......


解析:

if 代表的意思是如果,()内是判断是否执行 if 语句的条件,{ }内的…… 代表 if 要执行的内容

if 语句 不循环,条件满足只执行一次 if 内的语句,条件不满足就跳过 if 语句


二、 if 语句的基本用法

光说不练是肯定学不会的,接下来让我们在实战中来学习与掌握 if 语句


2.1 项目一 找钱

要求:计算并打印找钱,或告知用户余额不足以购买。

代码示例:

//初始化,定义两个变量,一个价格price,一个金额bill
int price = 0;
int bill = 0;

//读入价格和金额
printf("请输入价格:");
scanf("%d",&price);
printf("请输入金额:");
scanf("%d",&bill);

//判断找钱
if( bill >= price){
   printf("需要找您:%d元\n",bill - price);
}

万一金额不够,我们还要输出:您的钱不够

我们该怎么输呢?

if( bill >= price){
   printf("需要找您:%d元\n",bill - price);
}
printf("您的钱不够\n");

这样输肯定不对,因为这种情况不管钱够不够都会输出 您的钱不够

请看下方运行结果:

因为 printf("您的钱不够\n"); 不在 if 语句中,if语句如果条件不成立也不会跳过它,所以不管钱够不够都会输出 您的钱不够

所以我们需要用到else


2.2 else的用法

else = 否则的话

要输出 您的钱不够 正确的做法是:

if( bill >= price){
   printf("需要找您:%d/n元",bill - price);
}else{
   printf("您的钱不够\n");
}

这个代码的意思是:当 if 语句条件不满足(也就是bill<price)时,也就是else(否则的话),执行else中的语句。打印:您的钱不够


2.3 项目二 比较数的大小

要求:随机输入两个数,比较这两数中哪个数最大

比较数的大小(方案一) 纯 if 

 比较数的大小(方案二) if else(更推荐)

int a,b;
printf("请输入两个整数");
scanf("%d %d",&a,&b);

int max=0;

if(a>b){
    max=a;
}else{
    max=b;
}

printf("最的大那个数是:%d\n",max);
比较数的大小(方案三) 先让其中一个数为最大值


2.4 关于大括号{}

if与else也可以不带中括号去执行(非常不建议),条件满足只能执行if接下来的一句内容,如果带来中括号{},条件满足则可以执行{}内的全部内容

例如:

int a=3,b=4;
int max;

if(a>b)
    printf("max=a");
else
    printf("max=b");

printf("max=%d\n",max);
注:即使只有一条语句的时候也要在 if 或者 else 后面总是用{},这样做可以降低报错率


三、分支

3.1 嵌套的 if 语句

当 if 的条件满足或者不满足的时候要执行的语句也可以是一条 if 或者 if-else 语句,这就是嵌套的if语句

代码示例如下;

int a=3,b=6;
int count=10;

if(count>=0){
    if(a>b){
        printf("一切正常");
    }else{
        printf("程序有问题");   
    }
}
运行结果:


3.2 else 的配对

else总是和最近的那个 if 匹配,且与缩进无关

代码示例如下:

int code,a,count=18;
	
printf("请输入code的值:");
scanf("%d",&code);
	
printf("请输入a的值:");
scanf("%d",&a);

if( code<=0)
    if( count < 20 )
        printf("一切正常\n");
else
        printf("继续等待\n");
运行结果:

 解析:由于code=3,大于0,所以 if 语句的条件code<=0不满足,所以就会跳过 if 语言,而 else总是和最近的那个 if 匹配,并且与缩进无关,所以这个else是与 if (count<20)匹配,不是与 if (code<=0)匹配。


3.3 用 if else 语句来表示分段函数

if( x < 0 ){
  f = -1;
}else if( x == 0){
  f = 0;
} else {
  f = 2 * x;
}


3.4 if 语句的常见错误

  • 忘了大括号(永远在if和else后面加上大括号,即使当时后面只有一条语句)
  • if后面忘了分号
  • 错误使用==和=
  • 使人困惑的else


各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

  👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。