前言:想必大家都听说过三大结构,它们是十分神奇的,因为他们可以用逻辑描述在这个世界中所发生任何事情,今天就来了解一下实现这三大结构所用的其中一种语句——控制语句。
内容简要:
执行逻辑:
下面用代码实现一下:
int main()
{int true = 1;
int false = 0;
if(true)//非0为真,这里的true换成其他非0的数字也可以。
{ printf("真命题\n");
}
if(false)//0为假不执行
{ false = 1;
}
printf("%d",false);//验证:如果执行则为1,反之为0。
return 0;
}
2.if else执行逻辑:
注意:else与最近的if匹配。
实现代码:
#includeint main()
{ int a = 2;
if(a>1)//如果a大于1只执行if,否则执行else语句。
{printf("真命题");
}
else
{printf("假命题");
}
return 0;
}
3.if else if语句执行逻辑:
说明:当语句在所有情况都成立时,只执行第一个条件,当都不成立时,跳过所有语句。
代码实现:
int main()
{int a = 3;
if(a>3)
{printf("a大于3\n");
}
else if(a>4)
{printf("a大于4\n");
}//很显然这里都不执行,所以什么也不打印。
if(a>1)
{printf("a大于1");
}
else if(a>2)
{printf("a大于2");
}//这里情况都成立,只执行第一句。
return 0;
}
4.if __else if__else语句执行逻辑:
代码实现:
#includeint main()
{ int a = 5;
if(a<4)
{printf("a小于4\n");
}
else if(a<3)
{printf("a小于3\n");
}
else
{printf("a大于4");
}//这里第一丶二条语句都不成立,执行第三条语句。
return 0;
}
5.书写建议第一:使用if语句时要加大括号,提高代码的可读性。不良代码举例:
#includeint main()
{int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
//这里什么也不打印,如果没想通看一下上面 if else 的注意事项。
return 0;
}
修改后的代码
#includeint main()
{int a = 0;
int b = 2;
if(a == 1)
{ if(b == 2)
{ printf("hehe\n");
}
else
{ printf("haha\n");
}
}
//这样是不是好看,好读多了呢?
return 0;
}
第二:再进行变量与常量判断是否相等时,应将常量放在前面,变量放在后面。代码举例:
#includeint main()
{//判断a是否等于1
int a = 1;
if(a==1)
{printf("a的值为1\n");
}
//易错
if(a=1)//注意:这里是将1的值赋给a而不是等于!并且编译器是不会报错的!
{ printf("a的值为1\n");
}
if(1==a)
{ printf("a的值为1\n");
}
if(1=a)//注意:这里编译器会提示出现表达式左边必须是常量的bug,可以提醒你。
{ printf("a的值为1\n");
}
return 0;
}
第三:等号与大于等于号分开写代码举例:
1.等号:
int main()
{int a = 2;
int b = 2;
int c = 2;
//错误代码:
if(a==b==c)
{printf("abc相等\n");
}
else
{printf("abc不相等\n");
}
//正确代码
if(a==b&&b==c)
{printf("abc相等\n");
}
else
{printf("abc不相等\n");
}
return 0;
}
这里a == b == c代码的执行逻辑是先判断b==c如果正确,此表达式结果为1,反之为0,再将a == 表达式的结果(0/1)判断,如故果成立执行语句,如果不成立跳过语句。
2.大于,大于等于,小于,小于等于
代码举例:
#includeint main()
{int a = 0;
//错误代码
if(1printf("a大于1小于2\n")
}//这里会打印,思考一下代码的执行逻辑。
//正确代码
if(a>1&&a<2)
{printf("a大于1小于2\n")
}
return 0;
}
这里1
2.switch语句内容:Switch主要用于多情况的判断,可以借助if ,else if,else语句进行理解
执行逻辑:这是没有break的switch,就像没有判断的if语句一样只执行不判断,不过唯一的区别是输入情况是几,就从那条语句开始进行执行。代码实现:
#includeint main()
{int n = 0;
scanf("%d",&n);//输入1
switch(n)
{case 1:
printf("hehe\n");
case 2:
printf("haha\n");
default:
printf("heihei\n");
}
//试着思考一下代码结果。
printf("\n");
switch(n)
{case 2:
printf("haha\n");
case 1:
printf("hehe\n");
default:
printf("heihei\n");
}//这跟上一段代码的打印结果相同吗?
printf("\n");
switch(n)
{default:
printf("heihei\n");
case 2:
printf("haha\n");
case 1:
printf("hehe\n");
}//这跟上一段代码的打印结果相同吗?
printf("\n");
switch(n)
{case 1:
printf("hehe\n");
default:
printf("heihei\n");
case 2:
printf("haha\n");
}//这一段的代码的结果是?
return 0;
}
答案:
解析:
这几段的代码都是从输入的值的情况 处开始从上往下运行,直到最后一条语句。如果没有则执行default。
注意:
1.switch括号里面只能整形的变量或常量,case 后只能跟整形常量!
2.default:是除case情况外的其他情况进行执行的,一个switch只能有一条default。
如果输入几就只执行那一条语句的情况呢?
答:
这里要引入一个关键字:break——有终止,打破的意思,可以帮我们终止后面语句的执行。
代码实现:
#includeint main()
{int n = 0;
scanf("%d",&n);//输入1
switch(n)
{ case 1:
printf("hehe\n");
break;
case 2:
printf("haha\n");
break;
default:
printf("heihei\n");//最后一句是switch语句的终点,故不需再加breaK,小编还是建议加上。
break;
}
return 0;
}
思考:如果要知道一年的一个月有几天该如何实现呢(用switch语句)?解析:
#includeint main()
{//思路:1.3.5.7.8.10.12月,31天永不差
// 2月:闰年29天,平年28天
// 4.6.9.11月,30天
//闰年判断规则:1:能被4整除并且不能被100整除
// 2: 能被四百整除
//注意这两个条件只要满足一个即可
int month = 0;
int year = 0;
scanf("%d %d",&year,&month);
switch(n)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31天\n");//想一下switch的运行逻辑
break:
case 4:
case 6:
case 9:
case 11:
printf("30天\n");
case 2:
{if(((year%4==0)&&(year%100!=0))||(year%400==0))//因为这里并不知道优先级故要加括号,具体可参考if( ( ()&&() )||() )这个框架。
{printf("29天\n");
}
else
{printf("28天\n");
}
break;
}
default://其他情况如13
printf("查无此月\n");
}
return 0;
}
注意:switch是可以嵌套使用的!
例题:
int main()
{int n = 1;
int m = 2;
switch (n)
{case 1:
{ m++;
}
case 2:
{ n++;
}
case 3:
{switch (n)//注意这里n为2。
{case 1:
{ n++;
}
case 2:
{ m++;
n++;
break;
}
}
}
case 4:
{ m++;
break;
}
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
答案:
不知你做对了吗?
希望大家,学有所成,思有所得,得有所就!如果有误,请委婉一点指出,如果觉得文章不错,请留下您的点赞与评论,小编会继续加油!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧