选择程序设计
大家应该还记得我们上一节课做过一个题目,这个题目是用来求一元二次方程的根的,原来的程序如下:
#include<stdio.h>
#include<math.h> //程序中要调用求平方根函数 sqrt
int main(){
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc = b * b - 4 * a * c;
p = -b / (2.0 * a);
q = sqrt(disc) / (2.0 * a);
x1 = p + q,x2 = p - q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;
}
这个程序我们并没有加入一个 b^2-4ac
是否大于等于 0 的一个判断,现在我们对这个程序做出一些改动,加入判断语句,输入以下代码:
#include<stdio.h>
#include<math.h> //程序中要调用求平方根函数 sqrt
int main(){
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc = b * b - 4 * a * c;
if(disc<0)
printf("This equation hasn't real root!\n");
else{
p = -b / (2.0 * a);
q = sqrt(disc) / (2.0 * a);
x1 = p + q,x2 = p - q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
}
return 0;
}
输入以下命令编译并运行
gcc -o 6-1 6-1.c -lm
./6-1
我们运行两次,分别输入 a,b,c 不同的值。
会看到以下结果:
程序分析
这就是一个选择结构,if 对给定的条件 disc<0 进行判断后,形成了两条路径,如果 disc<0 成立,执行 printf("This equation hasn't real root!\n");,如果 disc<0 不成立,执行 else{} 中的内容。
知识点:
- 可以把几个语句放在一个 {} 中,这样如果 disc<0 不成立,就会执行 else{} 里面所有的内容;
- 假如没有 {} 同时 disc<0,这个时候执行完 printf("This equation hasn't real root!\n");;
- 语句以后会从 q=sqrt(disc)/(2.0*a);;
- 接着往下执行,大家可以自己思考下加不加 {} 的影响。
用 if 语句实现选择结构
在 C 语言中选择结构最常用的就是 if 语句,为了了解 if 语句的应用,我们举一个例子进行说明。
编写源程序 6-2.c:
#include<stdio.h>
int main(){
int number=0;
printf("\nPlease enter an integer between 1 and 10:");
scanf("%d",&number);
if(number>5)
printf("You entered %d which is greater than 5\n",number);
if(number<6)
printf("You enter %d which is less than 6\n",number);
return 0;
}
运行两次,分别输入 6 和 2.结果如下:
程序分析
- main() 函数体的前三个语句如下:
int number&