一、if语句
在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式。
if语句的结构为:
if(表达式) 语句1; else 语句2;
(1)if后面的表达式必须用括号括起来。
(2)语句可以是若干条语句构成的复合语句,用一对花括号括起来,还可以是一条空语句,用一个分号;表示。
(3)当语句2是空语句时,else连同语句2可省略。
(4)语句1和语句2还可以是if语句,即if语句的嵌套。
看一个程序代码
#include<stdio.h>
void main()
{
char x;
printf("请输入一个字符:\n");
scanf("%c",&x);
if(x>='a'&&x<='z'||x>='A'&&x<='Z') //判断x是否为字母
{
printf("字符是:%c,",x); //两条以上的语句要用大括号
printf("是字符\n");
}
else
{
printf("\n字符是:%c",x);
printf("不是字符\n");
}
getchar();
}
二、 条件运算符和表达式
1.条件运算符
条件运算符“?:”是三目运算符,需要有三个运算符对象。条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。
2.条件表达式
条件表达式的一般形式如下:
表达式1?表达式2:表达式3
条件表达式的运算顺序是:先计算表达式1,表达式1的值若为非0(真),求解表达式2,此时表达式2的值就是整个条件表达式的值,不执行表达式3;否则,就计算表达式3,此时表达式3,的值就是整个条件表达式的值,无须计算表达式2。
计算表中条件表达式的值
条件表达式 | 条件表达式的值 | 条件表达式 | 条件表达式的值 |
3?8:6 | 8 | x>=0?x:(-x) | 表达式的值就是x的绝对值 |
!3?8:6 | 6(!优先级高,3就是0) | x>=y?x:y | 表达式的值为x与y间的较大值 |
三、switch语句
if语句只提供了两种选择,在解决多分支选择时要使用if语句嵌套。由于使用多层的if语句嵌套非常不方便,这时可以采用多分支选择结构的switch语句.
1.switch语句形式
switch(表达式) { case 常量表达式1:语句1; case 常量表达式2:语句2; ... case 常量表达式n:语句n; default:语句; //默认,可有可无 }
2.switch语句执行过程
首先计算表达式的值,然后在switch语句体内寻找与其吻合的case标号,即值与之相同的常量表达式,如果有与其吻合的case标号,则执行从该标号开始的各语句,包括其后的所有case和default语句, 直到switch语句体结束;如果没有与其吻合的case标号,但存在default标号,则从default标号开始执行,直到switich语句体结束;如果没有与其吻合的case标号,并且也不存在default标号,则跳过switch语句体,执行后续语句。
此外,可以在各个case语句的最后加上break语句,每当执行到break语句时,立即跳出switch语句体,使得switch语句真正起到在多个分支选择其中一个分支执行的作用。
3.switch语句说明
表达式的运算结果可以是整型、字符型或者枚举型;表达式两边的括号不能省略;常量表达式的值必须是确定的,而且数据类型必须与表达式中的一致,case后面的各个常量表达式不可以写在case标号前面,也可以无default标号。
4.switch程序举例
输入星期几,弹出星期几。
#include <stdio.h>
void main(){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Monday\n"); break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n"); break;
case 4:printf("Thursday\n"); break;
case 5:printf("Friday\n"); break;
case 6:printf("Saturday\n"); break;
case 7:printf("Sunday\n"); break;
default:printf("error\n"); break;
}
getchar();
}
上期答案
逻辑表达式 | 逻辑表达式的值 | 逻辑表达式 | 逻辑表达式的值 |
!0 | 1 | !'a' | 0 |
5&&6<2 | 0 | 78&&0 | 0 |
5>0&&4>2 | 1 | 65-'A'||0 | 0 |
5>10||5<8 | 1 | 5<0||5>8 | 0 |
!0||0 | 1 | !(5>0) | 0 |
这期作业
1.编写一个程序,判断是否为三角形
2.编写一个程序,从键盘上输入一个年份year(4位十进制数),判断是否为闰年。闰年条件是:能被4整除,但不能被100整除,能被400整除。
3.编写一个程序,输入学生的成绩给出相应的等级,90分以上等级为A,80分为B,70分为C,60分为D,60分以下为E.(用switch语句来编程)