顺序结构,分支结构,循环结构 分支结构 if语句 switch语句
if语句有三种基本形式
1,
if(表达式)
语句块
如果()中表达式的值为真(表达式成立),就执行语句块,否则不执行语句块 表达式:可以是任意合法的c语言表达式 语句块就是一条或多条语句 语句:表达式+分号,或者只写一个分号(空语句) 如: a+b; a=10; a<b; .... 编码建议: 在写if语句时,语句块应该用大括号括起来,先把左括号{ 和右括号}写上,然后再去写里面的语句块 if的首字母i应该和 左括号{ 和右括号}在一条线上 {}里面的语句块要往右缩进 (建议用 tab键) if(表达式) { ..... ..... } 例子: if(今天下雨) { 出门带伞; } 输入一个整数,如果是奇数就输出。 int data; scanf("%d",&data); if(data%2!=0) { printf("%d是奇数\n",data); }
2,
if(表达式)
语句块1
else
语句块2
如果()里的表达式成立(值为真),就执行语句块1,否则就执行语句块2 编码建议: 语句块1和语句块2都需要打大括号,先把左括号{ 和右括号}写上,然后再去写里面的语句块 if的首字母i应该和 else的首字母e和 左括号{ 和右括号}在一条线上 {}里面的语句块要往右缩进 (建议用 tab键) if(下课了) { 休息一下 } else { 继续学习 }
练习: 输入两个整数,输出最大的那一个
if语句后面如果没有打大括号,那么该if语句到if后面的第一个分号结束 分析: if(表达式) 语句1;//if语句到此结束 语句2; else //else语句和上面的 if语句没有关系了,他是单独出现的,所以会报错 语句3;
练习: 输入三条边长,判断能否由这三条边组成一个三角形 任意两条边之和都要大于第三边 int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b>c && a+c>b && b+c>a) { printf("YES\n"); } else { printf("NO\n"); }
3,
if(表达式1)
{ 语句块1 }
else if(表达式2)
{ 语句块2 }
else if(表达式3) { 语句块3 }
.....
else if(表达式n)
{ 语句块n }
else
{ 语句块n+1 }
从上到下,依次判断每个表达式是否成立,如果成立就执行对应的语句块(不会再继续往下判断了), 不成立才会往下判断。如果所有的表达式都没有成立,则执行最后那个 else语句块n+1 适用于有多种情况,多种情况是并列关系 练习: 1,输入一个字符,如果这个字符是小写字母,则把它转换为对应的大写字母并输出 如果这个字符是大写字母,则把它转换为对应的小写字母并输出 如果这个字符是数字,则把它乘以2并输出 如果是其它字符,则原样输出 2,输入一个学生的考试分数,输出它的成绩等级 对应关系: [90,100] -> A [80,90) -> B [70,80) -> C [60,79) -> D [0,69) -> E
4,if语句嵌套
if语句中又有if语句
条件中又有条件
else和哪个if匹配的问题? 先从后面看,else总是与它上面的,同级的,最近的,未被匹配的 if进行匹配 练习: 输入三个整数,按照从小到大的顺序输出(要求,不能改变三个变量的值)
5, switch语句
语法:
switch(表达式)
{
case 常量表达式1: 语句块1
case 常量表达式2: 语句块2 case 常量表达式3: 语句块3 .... case 常量表达式n: 语句块n default ://必须有空格 语句块n+1 } switch语句把表达式可能的值一一列举出来,和 case后面的常量表达式做匹配,当匹配到某个 case后面的常量表达式时,就会从这个 case后面一直往下执行,直到遇到 break;或者整个 switch结束 ,如果所有case后面的常量表达式都不匹配,则匹配 default,就会从 default后面开始执行, 直到遇到 break;或者整个 switch结束 需要注意的细节: 1, switch()里面的表达式的值必须是整数,因为只有整数才能一一列举 2, 各个 case后面的“常量表达式”中不能包含变量,而且也得是整数 int a=10; case 10: //正确 case 2+5: //正确 case a: //错误 3, 各个case后面的“常量表达式”的值不能相等 4, default可要可不要, default和各个 case出现的顺序不影响匹配的结果 5,多个 case语句可以公用一个语句块 (case后面可以没有语句块) 6,在整个 switch语句内部,是不能定义变量 例子: 实现一个简单的计算器:输入操作数和运算符,输出结果
练习: 输入一个学生的考试分数,输出它的成绩等级。要求用 switch语句 对应关系: [90,100] -> A [80,90) -> B [70,80) -> C [60,79) -> D [0,69) -> E
练习:计算要交多少税 输入税前工资,输出税后工资。(不需要考虑五险一金) double x;//税前工资 scanf("%lf",&x); double y;//要交的税 if(x>5000 && x<=8000) { y = (x-5000)*0.03; } else if(x>8000 && x<=17000) { y = 3000*0.03 + (x-8000)*0.1; } else if(x>17000&&x<=30000) { y = 3000*0.03 + 9000*0.1 + (x-17000)*0.2; } .....
作业: 输入年月日,输出这一天是这一年的第几天