当前位置: 首页 > news >正文

Day-15【选择与循环】选择结构-if语句

目录

一、if语句

(1)单分支选择结构

(2)双分支选择结构

(3)多分支选择结构

(4)if-else的嵌套使用

二、开关分支语句(switch)

(1)一般形式

(2)说明:


一、if语句

(1)单分支选择结构

格式:

if(条件) -> 任意格式:非0 -> 为真 0->为假

{语句块} -> 注意当语句块只有一条语句时,可以省略不写{}

规则:如果条件为真,则执行语句块,否则跳过

例如:

if(x>y)

printf("%d",x);

说明:

① if后面的表达式任意类型,语句可以是复合语句

② if下只有一条语句时,可以省略大括号不写

③ if(x)等价于if(x!=0)

if(!x)等价于(x==0)

例题:

求一个数的绝对值
#include <stdio.h>
main()
{int x,y;printf("enter an integer:");scanf("%d",&x);y=x;  //将x的值赋给y;if(y<0)   //判断y是否小于0y=-y;   //若小于0就去相反数printf("\ninteger:%d-->absolute value:%d\n",x,y);
}
运行:
enter an integer: -12
integer: -12 -->absolute value: 12

(2)双分支选择结构

格式:

if (expression条件)
{语句块1;   //只有一句话,大括号可以省
}
else
{语句块2:
}
规则:如果条件为真,则执行语句块1,否则执行语句块2;
if语句例:
#include <stdio.h>
main()
{int a,b;printf("输入a:");scanf("%d",&a);    //输入a的值printf("输入b:");scanf("%d",&b);  //输入b的值if(a==b)   //判断a是否等于bprintf("a=b\n");    //真->输入a==belseprintf("a!=b\n");   //假->输出a!=b
}

(3)多分支选择结构

格式:
if (条件1){语句块1}
else if(条件2){语句块2}
else if(条件3){语句块3}
else 语句4
规则:如果条件1成立,执行语句块1.条件2 成立,执行语句2条件3成立,执行语句3都不成立,执行语句4
例:
if(salary>1000)//价格index=0.4;//折扣
else if(salary>800)index=0.3;
else if(salary>600)index=0.2;
else if(salary>400)index=0.1;
elseindex=0;
成绩在: 80-100  A70-79  B60-69  C0-59   D
要求:输入一个同学的成绩,输出它的级别
#include <stdio.h>
main()
{int grade;scanf("%d",&grade);
if(grade>100||grade<0)
printf("非法数值")//限制输入数字的范围if(grade>=80&&grade<=100)printf("A");else if(grade>=70)printf("B")else if(grade>=60)printf("C");else printf("D");
}
键盘上的字符种类分为:
控制字符:__<32
数字:'0'-'9'
大写字母:'A'-'Z'
小写字母:'a'-'z'判断输入字符的种类:
#include <stdio.h>
main()
{char c;printf("输入一个:");ch=getchar();if(ch<32)printf("是控制字符\n");else if(ch>'0'&&c<='9')printf("是数字字符\n");else if(ch>='A'&&c<='Z')printf("是大写字符\n");else if(ch>='a'&&c<='z')printf("是小写字符\n);else printf("其他");}

(4)if-else的嵌套使用

if-else配对原则:缺省{}时,else总是和它上面离最近的未配对的if相配

if(...)if(...)if(...)else...else...
else...
输入两数并判断其大小关系:
#include <stdio.h>
main()
{int x,y;printf("输入x,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y)printf("X>Y\n");elseprintf("X<Y\n");elseprintf("X==Y\n");
}

二、开关分支语句(switch)

仍然是一个多分支选择结构

(1)一般形式

switch(表达式)   ->表达式不能为小数   表达式中和谁相等,就执行谁后面的语句
{
case e1:语句1;[break;]
case e2:语句2;[break;]    //e都为常量,不能变化。是固定的值,也不能是小数
case e3:语句3;[break;]    //e就是常量表达式
case e4:语句4;[break;]
case e5:语句5;[break;]
[default:语句;[break;]]  默认,除此之外,都执行它。放到哪里没关系,都可以执行
}

(2)说明:

(1)switch后的表达式以及case后的表达式均不能是实型,可以是整型或字符型等,case后的表达式必须为常量表达式,且值必须互不相同

(2)break是跳出整个复合语句

(3)case后可包含多个可执行语句,且不必加{}

(4)switch可嵌套

(5)default的功能是在其它case后找不到对应常量,则执行default后面语句

(不必再最后一句)

例:
switch(score)
{case 5:printf("very good");case 4:printf("good");case 3:printf("pass");case 2:printf("fail");default: printf("data error");
}
此时:
运行结果:score为5时,输出:very good good pass fail data error
输入一个月份,输出相对应的季节:
#include <stdio.h>
void main()
{int month;scanf("%d",&month);switch(month){case 1:printf("春天");break;case 2:printf("春天");break;case 3:printf("春天");break;case 4:printf("夏天");case 5:printf("夏天");case 6:printf("夏天");case 7:printf("秋天");case 8:printf("秋天");case 9:printf("秋天");case 10:printf("冬天");case 11:printf("冬天");case 12:printf("冬天");default:printf("error"); 这里加不加break都可以}}
如果month是5,则运行结果就是匹配到5后面的结果都输出
执行下面所有的可执行语句
如果想只输出一个对应的结果,需要在固定的输出后面加break,表示跳出循环合并:case 1:case 2:case 3:printf("春天");break;
当输入1时,则开关进入1中,找不到接着继续往下找,知道case3输出春天并跳出。实现了合并功能
输入123都是春天

!!!一定注意:有break和没break的规则不同

读个程序:
void main()
{int x=1,y=0,a=0,b=0;switch(x)    //1{switch(y)   //0{case 0:a++;break;  //匹配此条,执行a++  此时a=1.跳出此层case 1:b++;break;}   注意:这里没有break则接着后面的语句执行:case 2:a++;b++;break;   //执行a++,b++   a=2,b=1碰到break跳出case 3:a++;b++;}printf("\na=%d,b=%d",a,b);   最终输出a=2,b=1
}运行结果:a=2,b=1


总结:

1、☆= ☆!=0

!☆= ☆==0

2、if-else配对原则:缺省{}时,else总是和它上面离他最近的未配对的if相配对

3、(1)switch后面括号中可以是常量或变量表达式,但不能是实型数据

(2)case后面是常量表达式,且不能是实型,且不能有重复

(3)break、default的功能需要注意

4、注意格式书写

switch()

{ case__:____;

__:

}

相关文章:

  • 海盗64位GameServer的使用体验
  • 访谈 | 吴恩达全景解读 AI Agents 发展现状:多智能体、工具生态、评估体系、语音栈、Vibe Coding 及创业建议一文尽览
  • Python基于PCA、PCA-kernel、LDA的鸢尾花数据降维项目实战
  • 【深度学习-Day 22】框架入门:告别数据瓶颈 - 掌握PyTorch Dataset、DataLoader与TensorFlow tf.data实战
  • 多模态知识图谱可视化构建(neo4j+python+flask+vue环境搭建与示例)
  • 飞书常用功能(留档)
  • Linux入门(十四)rpmyum
  • 什么是 Docker Compose 的网络(network),为什么你需要它,它是怎么工作的
  • Windows Server部署Vue3+Spring Boot项目
  • 6个月Python学习计划 Day 13 - 文件操作基础
  • 移动网页调试的多元路径:WebDebugX 与其他调试工具的组合使用策略
  • 【搭建 Transformer】
  • 亚马逊Woot提报常见问题第一弹
  • 十五、【测试执行篇】异步与并发:使用 Celery 实现测试任务的后台执行与结果回调
  • Go语言学习-->编译器安装
  • leetcode47.全排列II:HashSet层去重与used数组枝去重的双重保障
  • 种草平台:重新定义购物的乐趣革命
  • 什么是“音节”?——语言构成的节拍单位
  • 【25.06】FISCOBCOS使用caliper自定义测试 通过webase 单机四节点 helloworld等进行测试
  • FreeRTOS的简单介绍
  • 网站建设教程免费湖南岚鸿/武汉百度推广电话
  • 人人做网站/电商最好卖的十大产品
  • 房屋装修设计网站/网站内容seo
  • 老板合作网站开发/佛山网络推广平台
  • 福建省建设厅网站节能办/品牌推广案例
  • 手机网站 等比缩放/网站怎么优化搜索