- // 选择结构和条件判断
- if (x>=0)
- printf("%d",x);
- else
- printf("%d",-x);
- C 语言有两种选择语句:
- 1.if 语句
- 2.switch 语句
- #include "stdafx.h"
- #include "math.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- double a,b,c,disc,x1,x2,p,q; //disc是判别式sqrt(b*b-4ac)
- scanf_s("%lf%lf%lf",&a,&b,&c); //输入双精度浮点型变量的值要用格式声明"%lf"
- disc=b*b-4*a*c;
- if(disc<0) //若b*b-4ac<0
- printf("This equation hasn't real roots\n"); //输出“此方程无实根”
- else //b2-4ac>=0
- {
- p=-b/(2.0*a);
- q=sqrt(disc)/(2.0*a);
- x1=p+q;x2=p-q;
- printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2);
- }
- return 0;
- }
- // 用if语句实现选择结构
- 1.举例
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- float a,b,t;
- scanf_s("%f,%f",&a,&b);
- if(a>b)
- {
- //将a和b的值互换
- t=a;
- a=b;
- b=t;
- }
- printf("%5.2f,%5.2f\n",a,b);
- return 0;
- }
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- float a,b,c,t;
- scanf_s("%f,%f,%f",&a,&b,&c);
- if(a>b)
- {
- t=a; //借助变量t实现变量a和变量b互换值
- a=b;
- b=t;
- } //互换后a小于或等于b
- if(a>c)
- {
- t=a; //借助变量t实现变量a和变量c互换值
- a=c;
- c=t;
- } //互换后a小于或等于c
- if(b>c)
- {
- t=b;
- b=c;
- c=t;
- } //互换后b小于或等于c
- printf("%5.2f,%5.2f,%5.2f\n",a,b,c); //顺序输出a,b,c的值
- return 0;
- }
- 2.if 语句的一般形式
- a.if (表达式) 语句 1
- b.if (表达式)
- 语句 1
- else
- 语句 2
- c.if (表达式1) 语句1
- else if(表达2) 语句2
- else if(表达3) 语句3
- .
- .
- .
- else if(表达式m) 语句m
- else 语句m+1
- // 关系运算符和关系表达式
- 1.关系运算符及其优先次序
- <,<=,>,>=
- ==,!=
- 2.关系表达式
- 用关系运算符将两个数值或数值表达式连接起来的式子,称关系表达式。
- //逻辑运算符和逻辑表达式
- 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子就是逻辑表达式
- 1.逻辑运算符及其优先次序
- 有3种逻辑运算符:与(AND)、或(or)、非(NOT)
- && 逻辑与
- || 逻辑或
- ! 逻辑非
- "&&"和"||"是双目(元)运算符
- "!"是一目(元)运算符
- a.!(非)
- &&(与)
- ||(或)
- 其中"!"为三者中最高的
- b.逻辑运算符中的"&&"和"||"低于关系运算符,"!"高于算数运算符
- //逻辑表达式
- C 语言编译系统在表示逻辑运算结果时,以数值1代表"真",以0代表"假"
- 但在判断一个量是否为"真"时,以0代表"假",以非0代表"真"。
- 5>3&&8<4-!0
- 表达式自左至右扫描求解。
- 首先处理"5>3"(因为关系运算符优先于逻辑运算符)。
- 在关系运算符>两侧的5和3作为数字参加关系运算,"5>3"的值为1(代表真)。
- 再进行"1&&8<4-!0"的运算,8的左侧为"&&",右侧为"<"运算符,根据优先规则,
- 应先进行"<"的运算,即先进行"8<4-!0"的运算。
- 现在4的左侧"<",右侧为"-"运算符,而"-"优先于"<",因此应先进行"4-!0"的运算,
- 由于"!"的级别最高,因此先进行"!0"的运算,得到结果1。
- 然后进行"4-1"的运算,得到结果3,再进行"8<3",得0,最后进行"1&&0"的运算,得0。
- 例如,判别用year表示的某一年是否闰年,可以用一个逻辑表达式来表示。
- 闰年的条件是符合下面二者之一:
- 1.能被4整除,但不能被100整除
- 2.能被400整除
- (year%4==0&&year100!=0)||year%400==0
- !((year%4==0&&year100!=0)||year%400==0)
- (year%4!=0)||(year%100==0&&year%400!=0)
- //逻辑性变量
- 这是C99所增加的一种数据类型,可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,
- 以便于分析和运算。定于逻辑变量用类型符_Bool。如
- float score;
- scanf("%f",&score);
- _Bool a,b; //a和b被定义为逻辑型变量
- a=score>=60; //将关系表达式score>=60的值赋给逻辑变量a
- b=score<=69; //将关系表达式score头<=69的值赋给逻辑变量b
- if(a&&b) printf("The grade is C\n"); //如果a和b均为真,输出分数等级C
- 在头文件stdbool.h中,将bool定义为_Bool的同义词,同时定义了两个符号变量 true 和 false 。
- true 代表 1,false 代表 0,用它们分别代表真和假。
- 如在源文件中用#include 指令包含了头文件stdbool.h,那么上面的程序段可以写成
- float score;
- scanf("%f",score);
- bool a,b; //a和b被定义为逻辑型变量
- a=score>=60; //将关系表达式score>=60的值赋给逻辑变量a
- b=score<=69; //将关系表达式score头<=69的值赋给逻辑变量b
- if(a==true&&b==true) printf("The grade is C\n"); //如果a和b均为真,输出分数等级为C