------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
一、if语句介绍及基本格式
1、if语句实现分支控制
一般形式(第一种形式):表示如果表达式为真,执行语句块1,否则不执行。
if(表达式)
{
语句块1
}
后续语句;
<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {
//先定义变量
int num=0;
//提示用户输入一个数
printf("请输入一个数字:\n");
//接收用户输入的数
scanf("%d",&num);
//判断这个数是否等于5
if (num == 5) {
printf("恭喜你!\n");
}
//如果等于5 提示 恭喜你
printf("num = %d\n",num);
//如果不等于 5 提示很可惜
if (num != 5) {
printf("很可惜!\n");
}
return 0;
}</span>
二、if ...else ...语句使用
如果表达式为真,则执行语句块1,否则执行语句块2
if(表达式)
{
语句块1;
}
else
{
语句块2;
}
2、if语句嵌套
if(表达式1)
{
......
if(表达式2)
{
}
else
{
}
......}
else
{
}
<span style="font-size:14px;">#include <stdio.h>
void test(){
//先定义变量
int num=0;
//提示用户输入一个数
printf("请输入一个数字:\n");
//接收用户输入的数
scanf("%d",&num);
//判断这个数是否等于5
// num == 5 为假 可能是大于5,也可能是小于5
if (num == 5) {
//如果等于了5,提示 恭喜你
printf("恭喜你!\n");
}else{
//否则提示 很可惜
printf("很可惜!\n");
}
}
int main(int argc, const char * argv[]) {
//先定义变量
int num=0;
//提示用户输入一个数
printf("请输入一个数字:\n");
//接收用户输入的数
scanf("%d",&num);
//判断这个数是否等于5
// num == 5 为假 可能是大于5,也可能是小于5
if (num == 5) {
printf("恭喜你\n");
}else{
//再判断,如果这个数大于5 提示 大于5
if (num > 5) {
printf("大于5了\n");
}else{
//否则提示 小于5
printf("小于5了\n");
}
}
return 0;
}</span>
三、if…else if语句
如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断 表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(表达式1)
{
语句块1
}
else if(表达式2)
{
语句块2
}
else if(表达式3)
{
语句块3
}
else
{
语句块4
}
<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {
//定义变量,保存用户输入的分数
int score=0;
//提示用户输入一个分数
printf("请输入一个分数:\n");
//接收分数
scanf("%d",&score);
//校验分数是否合法( score<0||score>100)
if (score<0 || score > 100) {
printf("分数不合法!\n");
}else{
//当分数合法以后,再判断等级
if (score<=59) { //0-59 想反 60-100
printf("E\n");
}else if(score<=69){ //60-69 70-100
printf("D\n");
}else if (score<=79){ //70-79 80-100
//C
printf("C\n");
}else if (score<=89){//80-89 90-100
//B
printf("B\n");
}else{ //90-100
printf("A\n");
}
}
return 0;
}</span><span style="color: rgb(255, 255, 255); font-size: 14px; font-family: Menlo; background-color: rgb(255, 255, 255);">}</span>
四、if语句使用注意点
1、使用注意点
1)if(条件) 可以直接写分号 “;” 表示什么也不干 “;” 空语句
2)if(条件) return 0; 程序不会往下执行了,直接退出
3)if(1)、if(-1) 表示永真 if(0) 表示为永假
4)if语句的作用域问题
if (age > 10) { printf("已经懂事了\n");
int num = 1000; }
printf("num = %d\n",num);
5)if语句的作用域紊乱
6)遇到省略大括号的if
if (age >= 0)
if(age < 5)
printf("小儿\n");
else if(age < 10)
printf("小孩\n");
if (age > 12)
printf("小破孩\n");
else
printf("不知道\n");
就近原则,从下往上找
<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 3,b=4;
//1、空语句
if (a==3); //空语句,什么都没有干
//2、如果if之后的代码块,如果只有一句话,则可以省略大括号
if (a>3)
printf("a>2\n"); //if条件如果没有大括号,只会影响一句话
//3、永真式和永假式
if(1){ } //大括号中永远执行
if(0){ } //大括号中永远不会执行
//4、if语句结合return 语句
if (a>3)
return 0; //在一个函数中,return语句之后的语句都不会执行
//5、if作用域的问题
if (a==3) {
int num = 10;
}
//printf("num = %d\n",num);
//6、容易疑惑的地方 作用域的紊乱
if(a==3)
//int num = 10;
printf("a>3\n");
//7、省略大括号的分析
int age = 13;
if (age >= 0){
if(age < 5){
printf("小儿\n");
}else{
if(age < 10){
printf("小孩\n");
if (age > 12){
printf("小破孩\n");
}else{
printf("不知道\n");
}
}
}
}
return 0;
}</span>
五、switch语句基本格式
1、Switch分支语句:
switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2; ...
case 常量表达式n: 语句n;
default: 语句n+1;
}
2、使用格式
其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {
//提示用户点菜,1-7
printf("本店开张,请点菜,请输入序号1-7\n");
//定义变量,接收用户输入的内容
int no;
//接收用户输入的内容
scanf("%d",&no);
if (no<1 || no > 7) {
printf("本店厨师还在写代码,还没时间更新菜谱\n");
return 0;
}
//判断(switch)
// 1 2 3 4 5
switch(no){
case 1: printf("玉米炒葡萄\n");
case 2: printf("月饼炒辣椒\n");
case 3: printf("爆炒妙脆角\n");
case 4: printf("番茄炒卤蛋\n");
case 5: printf("南瓜炒猪肝\n");
case 6: printf("苹果炒西瓜\n");
case 7: printf("天地无极\n");
}
return 0;
}</span>
六、case语句穿透问题
1、什么是case穿透?
某个case语句执行完成后,并没有结束,而直接向下执行其他的case语句
这种现象就称之为case穿透
2、如何防止case穿透?
我们需要在每一个case语句结束之后,加上一句话:break;
break 作用 是结束switch语句
<span style="font-size:14px;">#include <stdio.h>
void test(){
//提示用户点菜,1-7
printf("本店开张,请点菜,请输入序号1-7\n");
//定义变量,接收用户输入的内容
int no;
//接收用户输入的内容
scanf("%d",&no);
if (no<1 || no > 7) {
printf("本店厨师还在写代码,还没时间更新菜谱\n");
//return 0;
}
//判断(switch)
// 1 2 3 4 5
switch(no){
case 1: printf("玉米炒葡萄\n");break;
case 2: printf("月饼炒辣椒\n");break;
case 3: printf("爆炒妙脆角\n");break; //break作用是结束switch语句
case 4: printf("番茄炒卤蛋\n");break;
case 5: printf("南瓜炒猪肝\n");break;
case 6: printf("苹果炒西瓜\n");break;
case 7: printf("天地无极\n");break;
}
printf("xxxxxxx\n");
}</span>
七、switch使用注意事项
1、case后面的大括号的问题
1) 表达式的类型(case语句后的值)必须是整型或可以转变为整型的值 (byte、short、char和int类型)。
2) 功能代码部分可以写任意多句。
3) case语句可以有任意多句,可以不用加括号“{}”
4) break关键字的意思是中断,指结束switch语句,break语句为可选。
2) 功能代码部分可以写任意多句。
3) case语句可以有任意多句,可以不用加括号“{}”
4) break关键字的意思是中断,指结束switch语句,break语句为可选。
#include <stdio.h>
int main(int argc, const char * argv[]) {
int num = 10;
//'a' = 97
switch ('a'+'a') {
case 194:
{
printf("num = 10\n");
printf("sb \n");
printf("zbz \n");
printf("cgx \n");
break;
}
default:
break;
}
return 0;
}
2、case值的规定
1)case的值1、值2...值n只能为常数或常量,不能为变量。
2)case的值必须是整数,不能为浮点数。
3)case后面不可以直接定义变量
4)如果在case后面定义的变量必须加上大括号
5) default语句可以写在switch语句中的任意位置,功能类似于if语句中的else。
执行流程:在执行的过程中,如果遇到break语句,则跳出switch语句。如果没有遇到break 语句,则一直执行到switch语句的结束。
<span style="font-size:14px;">#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 5;
int num = 11;
switch (num) {
default:
printf("other。。。。\n");
//break;
case 10:
printf("num = %d\n",num);
int num2 = 3;
break;
case 11:
printf("num2 = %d\n",num2);
break;
}
return 0;
}</span>
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------