当前位置: 首页 > 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__:____;

__:

}

http://www.lqws.cn/news/107119.html

相关文章:

  • 2025年微信小程序开发:AR/VR与电商的最新案例
  • sourcetree中的mercurial有什么用
  • 用PyTorch从零开始编写DeepSeek-V2
  • ONLYOFFICE 与 LocalAI:在 Ubuntu 上搭建 AI 文档编辑环境
  • 二进制安全-OpenWrt-uBus
  • 黑马程序员TypeScript课程笔记2(11-20)
  • MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)
  • 【笔记】用命令手动下载并安装 tokenizers 库.whl文件(Python 3.12+)
  • Modbus转Ethernet IP网关助力罗克韦尔PLC数据交互
  • ESP32开发之LED闪烁和呼吸的实现
  • Tiktok App 登录账号、密码、验证码 XOR 加密算法
  • 道可云人工智能每日资讯|北京农业人工智能与机器人研究院揭牌
  • 【leetcode】15.三数之和
  • day20 奇异值SVD分解
  • 重新审视自回归语言模型的知识蒸馏
  • el-select 实现分页加载,切换也数滚回到顶部,自定义高度
  • Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析
  • 【C/C++】初步了解享元模式
  • 20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】
  • 机器学习——使用多个决策树
  • Agent智能体应用教程系列(四):仅需几步,拥有自己专属的多agent智能体!
  • 计算A图片所有颜色占B图片红色区域的百分比
  • 关于物联网的基础知识(二)——物联网体系结构分层
  • 用Python训练自动驾驶神经网络:从零开始驾驭未来之路
  • Docker 部署前后端分离项目
  • 第六章 缓存一致性协议 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • 阿里云无影云桌面深度测评
  • C++ Learning string类模拟实现
  • 使用glide 同步获取图片
  • 数据解析:一文掌握Python库 lxml 的详细使用(处理XML和HTML的高性能库)