程序的三种结构:顺序、分支、循环
1、顺序 按照先后顺序执行
int a = 5;
int b =7;
先执行a= 5,在执行b=7.
2、分支:if分支有三种形式
形式1:
if(条件表达式){
语句
}
先执行()内的条件表达式,如果条件表达式结果为真,则执行if后面{}内的代码;如果条件表达式结果为假,则跳过{ }内的代码,执行if语句后面的代码。
注意:
上述代码表达式括号()后面跟了’;',导致if语句为空语句,大括号内的语句跟if语句没有关系,无论条件真假都会执行语句。
在if条件表达中,等号== 常量写于变量前面,为了防止等号 == 写不全。
一般的声明的变量只能写在 = 前面。
形式2:
if(条件表达式){
语句1;
}else{
语句2;
}
当条件表达式为真时,执行语句1,否则执行语句2.
例题:
输入一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年
提示:闰年:能被400整除或者能被4整除但是不能被100整除
int year = 0;
printf("Pleaseenter a year: \n");
scanf("%d",&year);
if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
printf("The year is a leap year. \n");
}
else{
printf("The year ia a non-leapyear. \n");
}
注意:
if中的条件表达式比较复杂,可读性差。最好的在括号外面定义,增强可读性。如下:
BOOL r1 = (year % 400 == 0);
BOOL r2 = (year % 4 == 0) && (year % 100 != 0);
if (r1 || r2) {
printf("该年是闰年. \n");
}else {
printf("该年不是闰年. \n");
}
形式3、
if(条件表达式1){
语句1;
}else if(条件表达式2){
语句2;
}else{
语句3
}
如果条件表达式1为真,执行语句1。如果条件表达式1为假,条件表达式2为真,执行语句2。如果条件表达式1与条件表达式2都为假,执行语句3。
注意:if-else 最多使用2组。多于2组的使用switch –case函数。
例题:
从键盘输入一个字符,如果是数字打印this is digital。如果是大写字母,打印this is capital letter。如果是小写字母,打印this is letter。如果是其他字符,打印 other。
char m = 0;
printf("please enter a character; \n");
scanf("%c", &m);
if (m >= '0' && m <= '9') {
printf("this is digital. \n");
}else if (m >= 'A' && m <= 'Z'){
printf("this is capital letter. \n");
}else if (m >= 'a' && m <= 'z'){
printf("this is letter. \n");
}else{
printf("other \n");
}
3、条件运算符 ?
公式:条件表达式 ? 表达式1 :表达式2
条件表达式结果是:真或假
如果条件表达式结果为真,则运算结果为表达式1的结果;
如果条件表达式结果为假,则运算结果为表达式2的结果;
例题:
比较两个数,定义变量接受两个数中的最小值
if/else 实现
int num1 = 2;
int num2 = 4;
int minValue = 0; //存放最小值
if (num1 > num2) {
minValue = num2; //num1的值大于num2
}else {
minValue = num1; //num1的值小于num2
}
printf("minValue = %d", minValue);
条件运算符实现:
minValue = num1 > num2 ? num2 : num1;
printf("minValue= %d", minValue);
4、switch语句
格式:
switch(整型/字符型表达式) {
case 值1:{ 语句1;break; }
case 值2:{ 语句2;break; }
…….
case 值n:{ 语句n;break; }
default:{ 语句n+1;break; }
}
1、如果表达式的值没有和任何一个case后面的值匹配成功,程序直接执行default语句。
2、default分支如果没有语句,可以没有{},但是必须要有break。
3、break语句在switch中的作用:结束当前case分支的执行,并且结束switch语句
4、多个case可以运行同一个代码段
5、整个default语句都可以去掉
6、case中定义变量需要加{ }。case后面的值是整型或字符型常量、整型常量表达式。不能使用变量。
例题:
按照考试成绩(A、B、C、D)的等级输出百分制分数段,A、B、C :输出60分以上 D:输出60分以下
char level = 'A';
switch (level) {
case 'A':
case 'B':
case 'C':{
printf("60分以上 \n");
break;
}
case 'D':{
printf("60分以下 \n");
break;
}
default:
break;
}
return 0;
}