一、选择结构
1.if语句:用来实现两个分支的选择结构
if语句的形式:
if(表达式) 语句1
else 语句2
if语句最常见的三种形式
(1) if(表达式) 语句1 (没有else部分)
(2) if(表达式)
语句1
else
语句2
(3) if(表达式1) 语句1 (在else部分嵌套了多层的if语句)
else if(表达式2) 语句2
else if(表达式3) 语句3
... ...
else
例:计算 ax^2 + bx + c = 0 的方程的根。
流程图
#include<stdio.h>
#include<math.h>//调用math方法
int main()
{
//if语句(实现两个分支的选择结构)
//计算ax^2 + bx + c = 0的方程的根。
double a,b,c, disc,x1,x2,p,q;//disc是 sqrt(b**2-4ac)
printf("输出参数:\n");
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b*2-4*a*c;
//幂函数pow()printf("%f",pow(3,2));
if(disc < 0){
printf("方程无实数根"); //b^2-4ac<0无实数根
}
else{
p = -b/(2.0*a);
q=sqrt(disc)/(2.0*a);//sqrt()函数平方根函数(非负实数)
x1=p+q;
x2=p-q;
printf("方程的两个根为:x1:%7.2f\t x2:%7.2f \n",x1,x2);
}
return 0;
}
2.switch语句:进行选择判断,switch(开关语句)常和case break default一起使用。
switch语句的形式:
switch(表达式)
{
case 常量 1 : 语句 1
case 常量 2 : 语句 2
... ...
case 常量 n : 语句 n
default : 语句 n + 1
}
注: (1) switch后面( )里面的表达式,值的类型应为整数类型(包括字符型)。
(2) 可以没有 default 标号,如果此时没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。
(3) 每一个case标号出现的次序互不影响,不影响执行结果,也可以先出现default再出现case...。
(4) 每一个case常量必须互不相同,否则会出现相互矛盾(switch会执行多种执行方案)。
(5) 执行一个case句子后,应当用break语句使其循环跳出switch结构,即终止switch语句,最后一个case句子不必break语句。
switch语句的基本结构:
switch(变量或者表达式)
{
case 变量情况或者表达式情况1 : 语句1 ; break;
case 变量情况或者表达式情况2 : 语句2 ; break;
case 变量情况或者表达式情况3 : 语句3 ; break;
……
default : 语句; //default情况就是指,除了你写的case的情况外的情况
}
注:一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。
例题:百分制成绩,要求输出成绩的等级ABCDE;由于case里面,只能是常量,switch里面放置表达式是得到分数的十位数字。
#include<stdio.h>
int main(){
//swith语句(用来实现多分支条件的选择结构)
int score,i=3;//此时score= 1,i=3,进行三次成绩判断
while(i--){
scanf("%d",&score);
if(score>100||score<0){
printf("输入错误!重新输入!\n");
scanf("%d",&score);
}
switch(score/10){// score/10取整
case(9):printf("A\n");break;
case(8):printf("B\n");break;
case(7):printf("C\n");break;
case(6):printf("D\n");break;
//其它
default:printf("E\n");break;
}
}
return 0;
}
二、运算符
1.关系运算符:用关系运算符将两个数值或数值表达式连接起来的式子。
(1) 优先级相同(高) <、<=、>、>=
(2) 优先级相同(低) ==、!=
2.逻辑运算符(&&、||、!)
运符符 | 含义 | 例子 | 解释 |
&& | 逻辑与 | a&&b | 如果a、b都为真,则结果为真,否则为假 |
|| | 逻辑或 | a||b | 若果a、b有一个为真,则结果为真,二者都为假,结果则为假 |
! | 逻辑非 | !a | 如果a为假,则!a为真,如果a为真,则!a为假 |
//逻辑运算符 c语言中所有非零数为真,0为假
//1.逻辑与 && 真真为真,一假则假
int a = 10;
int b = 9;
printf("%d\n",a<b&&a>b); // 0 假
printf("%d\n",a>b&&4<b); // 1 真
//2.逻辑或 || 一真则真,假假为假 printf("%d\n",a<b||a>b); // 1 真 printf("%d\n",a<b||11<b); // 0 假
//3.逻辑非 a为真,则!a为假;a为假,则!a为真
printf("%d\n",!(a>b)); // 0 假
printf("%d",!(a<b)); // 1 真
3.条件运算符(?) : 由 (? 和 : )组成,必须一起使用
条件表达式 : 表达式1 ? 表达式2 : 表达式3
4.选择结构的嵌套
if语句的嵌套:if语句包含一个或者多个if语句
形式:
注意:if与else的配对关系:else总是与它上面的最近的未配对的if配对