黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
第二 程序基本结构
一 分支结构
01 单分支结构
格式:
if(表达式)
{
语句;
}
其中,“表达式”为判断条件,只要表达式的值不为0,就认为条件成立。
02 双分支结构
格式:
if(表达式)
语句1;
else
语句2;
其中,表达式的值不为0,则执行“语句1”,否则执行“语句2”。
// 输入两个整数,按从小到大的顺序输出这两个数 #include <stdio.h> int main() { int a; int b; int temp; // 提示用户输入两个整数 printf("请输入两个整数:\n"); //接受用户输入的两个整数 scanf("%d%d",&a,&b); // 比较输出 if (a>b) { temp=b,b=a; printf("%d%d\n",temp,a); } else { printf("%d%d\n",a,b); } return 0; }
03 多分支结构
格式:
if(表达式1)
语句1;
else if(表达式2)
语句2;
……….
else if (表达式 n)
语句n;
else
语句n+1;
其中,按顺序求各个表达式的值,如果某一个表达式的值为真,那么执行其后的相应语句,执行完后整个if语句结束,其余语句不会被执行;如果没有一个语句为真,那么执行最后的else语句。
// 输入三个数x1,x2,x3,按从小到大的顺序输出者三个数 #include <stdio.h> int main() { // 定义四个变量 int x1,x2,x3,temp; // 提示用户输入三个数 printf("提示用户输入三个数:\n"); // 接受用户输入的数据 scanf("%d%d%d",&x1,&x2,&x3); // 比较并输出 if (x1>x2) { temp=x1;x1=x2;x2=temp; } if (x1>x3) { temp=x1;x1=x3;x3=temp; } if (x2>x3) { temp=x2;x2=x3;x3=temp; } printf("%d,%d,%d\n",x1,x2,x3); return 0; }
04 if语句的嵌套
格式:
if(表达式1)
if(表达式2)语句1;
else 语句2;
else
if(表达式3)语句3;
else 语句4;
其中,注意else与if的配对关系。C语言规定else总是与它前面最近的,且没有与其他else配对的if进行配对。
05 条件运算符
条件运算符“?:”是三目运算符,其功能相当于简单的if-else语句。
格式:
表达式1?表达式2:表达式3
其功能是,先计算“表达式1”的值,若为真就取“表达式2”的值为整个条件表达式的值,若为假,就取“表达式3”的值为整个表达式的值。
注意:
*条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符
例:max =a>b?a:b 等价 max=((a>b)?a:b)
*条件运算符的结合性为“自右向左”
a>b?a:c>d?a:d 等价 a>b?a:(c>d?a:d)
*表达式2和3不仅可以是数值表达式,还可以是赋值表达式和函数表达式
*表达式类型可以不同,条件表达式值的类型是表达式2和表达式3中类型较高的类型。
x>y?1:1.5 //x>y时返回值是1.0
// 某公园门票的票价为每人10元,一次购票满30张,每张可少收一元,编写一个收费程序 #include <stdio.h> int main() { int number,sum,money,balance; // 定义变量 printf("输入人数:\n"); scanf("%d",&number); if (number>=30) { sum = number*9; } else if(number*10<270) { sum = 10*number; } else { sum = 270; } printf("应受门票为%d元\n",sum); printf("实际收钱为:\n"); scanf("%d",&money); balance = money-sum; printf("balance=%d\n",balance); return 0;
06 switch语句
switch的基本格式:
switch()
{
case 常量表达式1:语句组1;【break;】
case 常量表达式2:语句组2;【break;】
………………………….
case 常量表达式 n: 语句组 n;【break;】
[default: 语句组 n +1;]
}
// 输入两个整数,输出较大的那个 #include <stdio.h> int main() { int a,b; printf("请输入两个整数:\n"); // 提示用户输入数据 scanf("%d%d",&a,&b); // 接受数据 // 判断输出 if (a>b) { printf("max=%d\n",a); } else { printf("max=%d\n",b); } return 0;
注意:
l switch后面的表达式只能是整型,字符型,枚举型表达式
l 当表达式的值与后面某个case的值相等时,就执行case后面的语句。然后,流程控制转移到下一个case中语句继续执行。如果不想继续执行就执行break语句使流程跳出switch结构,即终止switch语句的执行。
l 如果表达式的值与所有常量表达式都不匹配,就执行default后面的语句
各常量表达式的必须互不相同,否则就会出现矛盾