例:题目要求解得 ax2+bc+c=0 方程的根。由键盘输入 a, b, c 假设 a, b, c的值任意,并不保证 b2-4ac>=0。需要在程序中进行判别,如果 b2-4ac>=0,就盘算并输出方程的两个实根,如果 b2-4ac= 0。//需要在程序中进行判别,如果 b2 - 4ac >= 0,就盘算并输出方程的两个实根,//如果 b2 - 4ac b) printf("%lf %lf\n", b, a); else printf("%lf %lf\n", a, b); return 0;}[/code]运行结果:
分支1:
分支2:
例:输入3个数 a,b,c 要求由小到大顺序输出
//题目要求解得 ax^2 + bc + c = 0 方程的根。
//由键盘输入 a, b, c 假设 a, b, c的值任意,并不保证 b^2 - 4ac >= 0。
//需要在程序中进行判别,如果 b2 - 4ac >= 0,就计算并输出方程的两个实根,
//如果 b2 - 4ac<0,就输入“方程无实根”的信息。
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
double dis = b * b - 4 * a * c;
if (dis < 0)
{
printf("方程无实根\n");
return -1;
}
double p = 0 - b / (2 * a);
double q = sqrt(dis) / (2 * a);
double x1 = p + q;
double x2 = p - q;
printf("x1 = %lf\nx2 = %lf\n", x1, x2);
return 0;
}
复制代码
运行结果:
if 语句的一般形式
if 语句的一般形式:
//例:输入两个实数,按代数值由小到大的顺序输出这两个数
#include <stdio.h>
int main()
{
double a, b;
scanf("%lf %lf", &a, &b);
if (a > b)
printf("%lf %lf\n", b, a);
else
printf("%lf %lf\n", a, b);
return 0;
}
复制代码
表达式可以是关系表达式、逻辑表达式,甚至是数值表达式。
所谓的关系表达式就是两个数值进行比较的式子。
在 if 语句的一般形式中,方括号内的部门(即 else 子句)为可选的,即可以有,也可以没有
语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是另一个 if 语句(即在一个 if 语句中又包括另一个或多个内嵌的 if 语句)
if 语句常用的3种形式:
//例:输入3个数 a,b,c 要求由小到大顺序输出
#include <stdio.h>
int main()
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
if (a > b)
{
double temp = a;
a = b;
b = temp;
}//a < b
if (a > c)
{
double temp = a;
a = c;
c = temp;
}//a < c
if (b > c)
{
double temp = b;
b = c;
c = temp;
}//b < c
printf("%lf %lf %lf\n", a, b, c);
return 0;
}
复制代码
//例:输入3个数 a,b,c 要求由小到大顺序输出
#include <stdio.h>
int main()
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
if (a > b)
{
double temp = a;
a = b;
b = temp;
}//a < b
if (a > c)
{
double temp = a;
a = c;
c = temp;
}//a < c
if (b > c)
{
double temp = b;
b = c;
c = temp;
}//b < c
printf("%lf %lf %lf\n", a, b, c);
return 0;
}else 语句2
复制代码
//例:输入3个数 a,b,c 要求由小到大顺序输出
#include <stdio.h>
int main()
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
if (a > b)
{
double temp = a;
a = b;
b = temp;
}//a < b
if (a > c)
{
double temp = a;
a = c;
c = temp;
}//a < c
if (b > c)
{
double temp = b;
b = c;
c = temp;
}//b < c
printf("%lf %lf %lf\n", a, b, c);
return 0;
}else if (表达式2) 语句2else if (表达式3) 语句3 . . . . . .else if (表达式m) 语句melse 语句n
复制代码
整个 if 语句可以写在一行上也可以写在多行上
if 语句无论是写在一行上还是写在多行上,都是属于一个整体,属于同一个语句。
else 子句是不能作为语句单独使用的,必须是 if 语句的一部门,与 if 语句配对使用
内嵌语句也可以是一个 if 语句
在 if 语句中要对给定的条件进行查抄,判定所给定的条件是否成立。判定的结果是一个逻辑值“是”或“否”
关系运算符和关系表达式
有3种逻辑运算符,与(AND)或(OR)非(NOT)
在 BASIC 和 Pascal 等语言中可以在程序中直接用 AND,OR,NOT作为逻辑运算符,在 C 语言中不能再程序中直接使用 AND,OR,NOT 作为逻辑运算符,而是用其他符号代替
C 逻辑运算符及其含义运算符含义举例说明&&逻辑与 a && b如果 a 和 b 都是真,则结果为真,否则为假||逻辑或a || b如果a 和 b 有一个以上为真,则结果为真,二者都为假,则结果为假!逻辑非!a如果 a 为真,则 !a 为假,如果 a 为真,则 !a 为假“&&”和“||”是双目运算符,要求有两个运算对象(操纵数)“!”是一目(元)运算符,只要求有一个运算对象
逻辑运算的真值表ab!a!ba && ba || b真真假假真真真假假真假真假真真假假真假假真真假假非(!)的优先级高于与(&&),与(&&)的优先级高于或(||)
逻辑运算符中的“&&”和“||”的优先级低于关系运算符,而“!”的优先级高于算术运算符
逻辑表达式