1.简单if语句的学习
程序的设计是为了解决生活中的实际问题。在日常生活中我们往往会遇到一些与选择有关的问题:
今天出门是否带雨伞?
考试是否通过?
十字路口是否要驻足等待?
儿童坐火车是否免票?
想要解决好这些问题,我们首先要建立一个明确的判断标准:
我们以判断考试是否及格作为例子来学习一下判断与选择相关语句的使用。
在开始对这个问题进行构思编程之前我们先来学习一个从计算机之外获取数据的必不可少的函数scanf()。
上一讲我们学习了printf()
这个函数,它是用来把你想要输出的东西打印在电脑屏幕上的一个函数。而scanf()
恰恰与它相反, scanf()
是用来将解决问题所需要的数据通过键盘输入到计算机中函数。printf
与scanf
一个输入一个输出,两者在使用的形式上有相似之处。
其中%d
叫做格式字符,用来表示数据输入输出的格式;a,b
是变量名,是提前定义好的用来存放数据的,&
符号我们第一次见,它是用来获取一个变量/
常量/
函数的内存地址的。&a
的意思就是变量a
同学在我们计算机中所居住的地方的门牌号。那么这个门牌号是多少呢?如果你的好奇心很强的话,这里给你提供一种查询到小a
同学家门牌号的方法。
#include<stdio.h>int main(){ int a; scanf("%d",&a); printf("a的地址为%d\n",&a); return 0;}

在使用scanf
函数时一定要明确所输入数据的数据类型以及变量名和各个数据之间的对应关系,否则就容易出现错误。
了解了scanf()
函数的用法,接下来我们继续研究判断学生考试成绩是否及格的问题。
想要判断一个学生的考试成绩是否及格,首先我们要获取这个学生的成绩。于是我们定义了一个名为score
的变量用来储存这个学生的成绩。
但是这个学生的成绩现在是显示在他的试卷上的,我们怎么将这个卷面上的分数导入到电脑中呢?自然是使用刚刚学到的scanf()
函数。
scanf("%d",&score);//把试卷上的分数录入到电脑里并且保存在score这个变量中
获得了学生的成绩之后,判断他是否及格便变得很简单啦。我们把这位同学的成绩与及格标准60
分进行比较。当score
≥60
时,该同学成绩为及格
,
反之便是不及格。
if (score >= 60) printf("及格");else printf("不及格");
即当同学的成绩大于等于60分的时候打印“及格”,当同学的成绩不是大于等于60分,也就是小于60分的时候,打印“不及格”。把前边的C
语句连接在一起,再加上必要的框架,我们的一个简单的判断学生成绩是否及格的小程序便编写完成了。
#include<stdio.h>int main (){ int score; printf("请输入学生的成绩:"); scanf("%d",&score); if(score >= 60) printf("及格\n"); else printf("不及格\n"); return0;}


在进行选择和判定的时候我们用到了if
语句,其标准形式是
如果满足条件1
,就执行操作1
;否则就执行操作2
。
下面我们来练习一下:如果今天下雨我就在家写作业,否则我就去和同学打球。用if
…else
的形式如何来写呢?

这时你会发现代码无法通过编译。而错误信息会告诉你else
没有与if
相匹配。这时为什么呢?原来当if(
……)
后边没有;
的时候
if(source>=60)
printf(“
及格
\n”);
相当于一个整体,接下来的
else
与
if
语句仍然是相互匹配的关系。
而if(
……); printf(“
及格\n”);
相当于我们的操作
1
为没有操作,而
if()
其后紧跟的
printf(“
及格
\n”);
此时已经与
if
语句没有了关系。
else
在向前寻找
if
语句进行匹配时只会向前搜索一个语句,这个时候它没有发现
if
于是便完成选择结构的构建。这时编译器便会报错,提示你修改自己的程序以符合语法规则。
在我们的实际生活中我们不仅仅会遇到简单的、通过是非判断便可以做出选择的问题。有时候我们还会遇到一些需要多重判断才可以做出选择的问题。那么在面临这些问题的时候我们刚刚学会的If()
……else
语句还可以胜任吗?我们来尝试一下。
一般情况下我们都是三岁读幼儿园,六岁读小学,十二岁读初中,十五岁读高中,十八岁读大学,二十二岁本科毕业。我们能不能通过If()
……else
语句来对一个已知年龄的人来进行分类呢?
if (age>22) printf("本科毕业\n");else if (age>18) printf("读大学\n");else if (age>15) printf("高中\n");else if (age>12) printf("初中\n");else if (age>6) printf("小学\n");else if (age>3) printf("幼儿园\n");else printf("婴儿\n");
#include<stdio.h>int main (){int age;printf("请输入您的年龄:\n");scanf("%d",&age);printf("您现在的阶段是:");if (age>22) printf("本科毕业\n");else if (age>18) printf("读大学\n");else if (age>15) printf("高中\n");else if (age>12) printf("初中\n");else if (age>6) printf("小学\n");else if (age>3) printf("幼儿园\n");else printf("婴儿\n");return 0;}


通过这个例子我们发现,通过合理地使用一些简单语句,就可以实现一些较为复杂的功能。在下一节的内容中我们将进一步介绍If()……else语句的应用以及另一种选择结构的实现方法——switch语句的使用。
对于一元二次方程ax2+bx+c=0你可不可以根据今天所学的If()……else语句来设计一个小程序实现以下目标:
(一) 从键盘输入a、b、c的值,把完整的方程形式打印到屏幕上
/*程序中使用开平方函数sqrt()所必须添
加的头文件*/
完整代码:
#include <stdio.h>
int main(){ double simple = 1.2; printf("%f ", simple); int boxs = 1; printf("%d ", boxs); double temp = boxs + simple; printf("%f", temp); }