c语言入门:[10]选择结构if语句介绍之3
这节我把那个会员卡的例题再改一改:如果会员卡号是6开头,输出贵宾你好,你可以享受九折优惠,否则输出普通会员享受九五折优惠,以我们现在掌握的if语句我们可以这样写代码
main()
{
char v1,v2,v3,v4,v5;
printf("请输入5位会员卡号:");
scanf("%c%c%c%c%c",&v1,&v2,&v3,&v4,&v5);
if(v1=='6')
{
printf("贵宾你好,你可以享受九折优惠\n");
}
if(v1!='6')
{
printf("会员你好,你可以享受九五折优惠\n");
}
}
上面的例子是一个典型的两分支结构,就是只有两种情况,而且肯定有一种情况是成立的,也就是说程序运行的时候要么执行第一个if里的代码要么执行第二个if语句里的代码。按上面的写法是可以的,但我们按照程序执行的步骤解析一下你琢磨琢磨。
假如v1里面的值是6
程序执行到第一个if语句时先判断(v1=='6'),结果条件为真,执行if语句的大括号里的代码
程序执行到第二个if语句时还要判断(v1!='6'),结果条件为假,不执行if语句的大括号里的代码
其实我们完全没有必要判断两次,因为这两个条件表示两个完全相反的情况,第一个if成立的话第二个if就不可能成立,第一个if不成立则第二个if一定成立。对于这种两分支(就是两种情况,两种选择的意思)的选择结构我们在代码里可以用 if else 来实现,else 可以理解成否则的意思,它代表的是if小括号里的条件的相反情况,例如 if的条件是 a>0 那else 就表示a<=0的情况。上面那道例题的if else 写法如下:
main()
{
char v1,v2,v3,v4,v5;
printf("请输入5位会员卡号:");
scanf("%c%c%c%c%c",&v1,&v2,&v3,&v4,&v5);
if(v1=='6')
{
printf("贵宾你好,你可以享受九折优惠\n");
}
else
{
printf("会员你好,你可以享受九五折优惠\n");
}
}
对比之前的写法我们看这样写简洁明了,条件只判断一次。第一种写法用了两个if语句,这样写用了一个if语句。
有的人可能会产生疑问了,为什么第二种写法是一个if语句呢?其实else就是if语句的一个组成部分,只不过有的时候我们不需要它可以把它省略掉,请看下面的注释。
if(v1=='6')
{
printf("贵宾你好,你可以享受九折优惠\n");
};//你如果在这里加分号表示if语句到这里就结束了,那运行程序的时候就会报错,就会提示else前面有错误,因为那个else不属于if了,被孤立了出来,而else是不能单独存在的所以会报错。
else
{
printf("会员你好,你可以享受九五折优惠\n");
};//你如果在这里加分号是完全没有问题的因为if语句本来到这里就结束了,运行也不会报错。
现在我写一个程序
main()
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
if(a<0)
{
printf("你输入的是一个负数\n");
}
if(a==0)
{
printf("你输入的是零\n");
}
else
{
printf("你输入的是正数\n");
}
}
运行程序我从键盘输入-1,它的执行结果是什么?你可以先思考下再看答案。
我们来分析下为什么会是两个输出结果。
首先你要确定程序里是两条if语句,第一条if语句跟第二条if语句没有任何关系,代码从上到下执行,执行完第一个if语句肯定要执行第二个if语句。
因为a的值是-1所以第一个if语句的条件成立,输出你输入的是一个负数。
第二个if语句是一个两分支结构,if语句的条件成立执行第一个大括号里的代码,不成立执行else大括号里的代码,显然条件不成立所以执行了else里面的输出,输出你输入的是正数。
我们分析上面的例子应该是一个三分支的结构,也就是说有正数、负数、零三种选择,有的时候我们还有比三种选择更多的情况比如会员卡的种类有金卡、银卡、普通卡、钻石卡等等,那下节我们就来学习多分支选择结构。
(共篇)上一篇:选择结构if语句介...|下一篇: