第四章
任务一:选择性语句
任务二:循环性语句
小结
习题
时隔了这么长时间了,今天我要来更新“C语言轻松学习-4”了,大家是不是有点小激动?
那么,我们废话不多说,直接开讲!
看看任务一的大标题“选择性语句”,从这名字我们就可以看出来,这语句肯定是具有判断性,选择性的,那么我就要接着讲,四条具有判断性的语句
“if(逻辑值(0假,非0为真))”
“if(逻辑值(0假,非0为真)) else”
“if(逻辑值(0假,非0为真)) else if(逻辑值(0假,非0为真)) …… ……else”
“switch()”
第一条的“if()”上一章我们将过,所以这里就不再叙述了,我们直接开始“if() else”语句例子如下:
#include<stdio.h> int main() { int x; scanf("%d",&x); if(x>=3) { printf("大于等于3\n"); } else { printf("小于3\n"); } }
调试截图如下:若“if()”括号内的逻辑值为真(非0)则执行“if()”下方花括号里面的语句
反之,若逻辑值为假(0)则将会跳过该语句(printf(“大于等于3”);)并执行“else”下方花括号内的语句
那么我们来试一下,不需要表达式,只使用逻辑值,看看“if() else”语句能否正常执行,下方为调试代码:
#include<stdio.h> int main() { int x; scanf("%d",&x); if(x) { printf("真\n"); } else { printf("假\n"); } }
调试截图:果然我们输入逻辑值为真的非0数值“1”然后”if() else”则执行“if()”下方的语句,
反之,我们输入逻辑值为假的“0”数值,果不其然,跳转到“else”的下方语句
上述都只是一般地,简单式地判断,我们真正写程序时,用户使用时,可能并不止只有1个或2个提示,接下来我们来学习,多个“if() else if() else if()…… ……else”,最经常使用的语句,
例如,我们需要因学生成绩分数来判断Ta是否处于哪一级别的水平是‘A’级?‘B’级?‘C’级?等等…… ……
那么,这就是典型的多重判断,多重提示信息,我们就得使用该语句了,代码如下:
#include<stdio.h> int main() { int a; scanf("%d",&a); if((90<=a)&&(a<=100)) printf("A\n"); else if(a>=80) printf("B\n"); else if(a>=70) printf("C\n"); else if(a>=60) printf("D\n"); else printf("E\n"); return 0; }
调试截图:我们随便输入任意数值,
其实我们还可以利用“switch()”语句完成上述过程,我直接写例子了,这个目前我还没法儿解释,,不过使用很简单!代码如下:
#include<stdio.h> int main() { int a; scanf("%d",&a); switch(a) { case 100:printf("A\n"); case 90:printf("B\n"); case 80:printf("C\n"); case 70:printf("D\n"); case 60:printf("E\n"); case 50:printf("F\n"); case 40:printf("G\n"); //哇,,,累了后面懒得写了 } return 0; }
我们所输入的数值,程序会响应相应的”case x:事件”这样写,感觉不太好,例如下方调试,我们输入数值“80”却输出了很多从“C→G”全部输出了
试了试“60”输出“E→F”
我们发现了,我们输入对应的“case:x”虽然的确响应了正确的级别,不过它竟然把后面的其他情况也显露了出来,这样是不行的,所以我们就需要“break;”跳出语句了,
修改后代码如下:
#include<stdio.h> int main() { int a; scanf("%d",&a); switch(a) { case 100:printf("A\n"); break; case 90:printf("B\n"); break; case 80:printf("C\n"); break; case 70:printf("D\n"); break; case 60:printf("E\n"); break; case 50:printf("F\n"); break; case 40:printf("G\n"); //哇,,,累了后面懒得写了 break; //此行写不写无所谓,因为后面没有printf了,不过写了美观! } return 0; }
演示截图:
上述虽然成功了,不过大家有木有发现,我一直输入的都是“case: x”x相对应的整数值,那么,如果我们输入没有对应的“case”事件的数值时,会是什么样子腻?我们带着疑问继续调试
调试截图:发现了,此程序什么也没有输出,那么,这样就不方便了,用户必须得输入指定的对应具有事件的数值或字符,才能实现程序的效果性
大家要灵活使用啊,我们不止可以用 整数来作为对应事件的激活码,我们也可以使用字符来作为对应事件的激活码,代码如下:
#include<stdio.h> int main() { char a; scanf("%c",&a); switch(a) { case 'a':printf("A\n"); break; case 'B':printf("B\n"); break; case 'c':printf("C\n"); break; } return 0; }
调试截图:我们输入小写“a”,输出了对应的语句
要记得让用户准确输入指定的数值,才可以响应相应的语句,否则,如下:
回到原题,我们让用户输入成绩,然后这个“switch()”语句必须对应,才可以实现,除非我们一个一个的编写每个数值所对应的不同事件,代码如下:这样写,太费手了,所以,我们可以想个办法,使它尽量少写点儿语句,发现了没有,级别“A B C D E”分别对应“(100/10和9x/10)(8x/10)(7x/10)(6x/10)”
#include<stdio.h> int main() { char a; scanf("%c",&a); switch(a) { case 100:printf("A\n"); break; case 99:printf("A\n"); break; case 98:printf("A\n"); break; case 97:printf("A\n"); break; case 96:printf("A\n"); break; ...... ...... ...... ...... case 60:printf("D\n"); break; case 59:printf("E\n"); //哇,,,累了后面懒得写了 break; //此行写不写无所谓,因为后面没有printf了,不过写了美观! } return 0; }
忘了一条,我们可以把最后的“break;”替换为“default :printf(“bababa~”);”意思是如果用户输入的数值上述事件”case”都没有对应的响应,则最后响应此行,代码如下:
#include<stdio.h> int main() { int a; scanf("%d",&a); switch(a) { case 100:printf("A\n"); break; case 99:printf("A\n"); break; case 98:printf("A\n"); default :printf("bababa~"); } return 0; }
调试截图:我们将了这些,发现了没有语句“if() else if() else if()…………else”和“switch()”语句十分相似,不过,“switch()”相对较“死”而“if() else if()…………else”相对于比较灵活,不过我记得老师说过,虽然“switch()”相对“if()”较“死”,不过此语句好像是用作数据库必备的(=-=,Emmm…我也想不起来了)
OK,我们稍作休息,理解之后,下一页,学习下一课!
评论1