C语言分支语句

其实顺序结构,选择结构,循环结构就能干掉生活中大多数的问题。

分支语句有两种,if与switch(开关)语句

循环语句有:while,for,do while

什么是一个语句?~;这就是一条语句,多是一分号一语句

if(结果为真,非0的表达式)

语句1;

else if(表达式2)

语句2;

else

语句3;

上菜:

#include<stdio.h>

int main()

{

int age = 17;

if (age >= 18)

printf("成年");

else

printf("未成年");

return 0;

}//以上为if else训练,注意此if后没有;打了;else会匹配不上,以后的else要是想匹配if,都需要if后面无;

那我想说“未成年不能谈恋爱”,可不可以这样打?

#include<stdio.h>

int main()

{

int age = 18;

if (age >= 18)

printf("成年");

else

printf("未成年");

printf("不能谈恋爱");

return 0;

}

不能啊,打印出来是:成年不能谈恋爱,原因是if与else默认只对其后面的一句话生效,当超过这一句话,else就管不住了,所以这里只略过了打印未成年,不能谈恋爱却紧接着打印出来了

那我就是想把不能谈恋爱和未成年绑定在一起,怎么写呢?上菜:

else

{

printf("未成年");

printf("不能谈恋爱");

}

用大括号给它括在一起,就能改变else的默认作用范围

else if 上菜:

int main()

{

int age = 500;

if (age > 18 && age < 30)

printf("年轻人");

else if (age >= 30 && age < 50)

printf("中年人");

else if (age >= 50 && age < 70)

printf("中老年人");

else if (age >= 70 && age < 100)

printf("老年人");

else if (age >= 100 && age < 120)

printf("长寿老人");

else

printf("仙人");

return 0;

}//以上为else if训练,注意if后面想接else,if后面必不能打;

ps:为什么else if()里面不能打18<=age<30?这是错误的代码,如果你输入30以上的数字,仍然会打印年轻人,

因为这个数进来,发现>=18了吧,此时为真,结果就变成1了,结果1又<30,直接第一行就满足条件直接打印了

关于多个if与else的匹配问题

来,上菜:

//int main()

//{

//        int a = 0;

//        int b = 1;

//        if (a > 0)

//        if (b >= 1)

//                printf("呵呵");

//        else

//                printf("吼吼");

//        return 0;

//}//此为else匹配练习,最终打印结果为空白一片,原因是第一个if就没进来,else只匹配最近的if,匹配的第二个if,之后的程序就寄了。

关于两个值比较后选择打印的问题,上好菜:

int main()

{

int a = 3;

if (5 == a)//注意,此处必不能写;不然会无条件打印呵呵,以后遇到if还是能不写;就不写;吧

printf("呵呵");

return 0;

}//此处,打印结果为一片空白,很简单为甚,因为a不等于5,就不打印

那我if中又为什么要5==a这样写呢?理由是如果写a==5,容易漏写,如果写a=5会把5赋值给a,造成无条件打印呵呵,这就是bug,而这样写呢,漏写一个=,程序根本运行不了,因为你不能把a赋值给5吧,这就是良好的代码规范避免书写错误与bug。(5==a能运行,因为这里不是赋值,是判断数值)

选择语句应用:

1.判断一个数是否为奇数

2.输出1-100之间的奇数

上菜,第一题:

//判断一个数是否是奇数练习,%就是除号

//int main()

//{

//        int a = 0;

//        scanf("%d",&a );

//        if (1 == a % 2)

//                printf("奇数\n");

//        else

//                printf("偶数\n");

//        return 0;

//}//真是个成功的程序

上好菜!第二题:

//int main()

//{

//        int line = 0;

//        while (line <= 100)

//        {

//                if (1 == line % 2)

//                        printf("奇数%d\n",line);

//                line++;

//                if (0 == line % 2)

//                        printf("偶数%d\n",line);

//        }

//        if (line > 100)

//                printf("程序执行完毕");

//        return 0;

//        

//}//成功的程序!!!!!!!!!!!!!!!!!!!!我们是,冠军!

分支语句中的switch语句

格式:

switch(整形表达式)

{

语句项(case)

}

上菜:(由于switch多用输入,所以要用scanf)

int main()

{

int day = 0;

scanf("%d", &day);

switch (day)

{

case 1 :

printf("星期一\n");

case 2 :

printf("星期二\n");

case 3 :

printf("星期三\n");

}

return 0;

}//switch语句记得写break

那为什么会全打印星期一到星期三呢?输入的是几,仅仅决定的是从哪个入口进,case语句在没人阻止的情况下会一直往下执行,所以要有人阻止——即break,上菜:

int main()

{

int day = 0;

scanf("%d", &day);

switch (day)

{

case 1 :

printf("星期一\n");

break;

case 2 :

printf("星期二\n");

break;

case 3 :

printf("星期三\n");

break;

}

return 0;

}

switch语句的细节:

必须整形,浮点型float与double不行

包括case也得写1不能写1.0,n也不行,只能是常量和常量表达式,比如1+0就行,但字符行(字符本身存储就用的as科码,算整形)

如果我要是想从1-5都打印一个数,可以考虑去掉break

“输入错误提示语句”

default语句,上菜:

int main()

{

int day = 0;

scanf("%d", &day);

switch (day)

{

case 1 :

printf("星期一\n");

break;

case 2 :

printf("星期二\n");

break;

case 3 :

printf("星期三\n");

break;

default:

printf("输入错误,请输入1-3之间的数字");

break;

}

return 0;

}//switch语句记得写break

这时,再有人傻乎乎的输入个1-3以外的数字,就会有提示了,没有顺序问题,放前面也一样。

break会结束离他最近的switch语句,这一点与else if的匹配同理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值