5.1 关系运算符和关系表达式
一.关系运算符及其优先次序
二. 关系表达式
1.概念:用关系运算符将两个表达式连接起来的式子,称关系表达式。
2.关系表达式的值
5.2 逻辑运算符和逻辑表达式
一.逻辑运算符及其优先次序
二.逻辑表达式
1.概念: 用逻辑运算符将表达式连接起来的式子就是逻辑表达式。
2.逻辑表达式的值
5.3 if 语句
一. if语句的三种形式
例1.输入两个实数,按由小到大次序输出。
方法1:
main( )
{ float a,b,t;
scanf("%f,%f ",&a,&b);
if(a>b) {t=a;a=b;b=t;}
printf("%f,%f\n",a,b);
}
例1.输入两个实数,按由小到大次序输出。
方法2:
main()
{ float a,b;
scanf("%f,%f",&a,&b);
if(a>b) printf("%f,%f\n",b,a);
else printf("%f,%f\n",a,b);
}
说明:
if 和else后面都可以使用复合语句,即用{ }将若干个语句括起来。
例2.输入一个数,若大于零则输出。
main( )
{ float a;
scanf("%f",&a);
if(a>0) printf("%15.2f\n",a);
}
例3.输入三个数,按由小到大顺序输出。
main( )
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b) { t=a;a=b;b=t;}
if(a>c) { t=a;a=c;c=t;}
if(b>c) { t=b;b=c;c=t;}
printf("%15.2f,%15.2f,%15.2f\n",a,b,c);
}
二. if语句的嵌套
在 if 语句中又包含一个或多个 if 语句称为 if语句的嵌套。
例4 函数
方法一:
main( )
{ int x,y;
scanf("%d",&x);
if (x<0) y= -1;
else if (x==0) y=0;
else y=1;
printf("x=%d,y=%d\n",x,y);
}
方法二:
if(x<=0)
if (x==0) y=0;
else y=-1;
else
y=1;
三、条件运算符
说明:
- 优先于赋值运算符。
- 右结合。
- 若表达式2和表达式3的类型不同,则条件表达式的值为二者中较高的类型。
例5 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。
main( )
{ char ch;
scanf("%c",&ch);
ch=(ch>= 'A '&& ch<= 'Z ')?(ch+32):ch;
printf(“%c\n",ch);
}
5.4 switch语句
一.一般形式:
5.5 程序举例
例1.任给三角形的三边,判断该三角形是等边、等腰、直角或一般。
分析: 用变量a, b, c表示三角形三条边的长。
#include "math.h"
main( )
{ int a,b,c;
scanf{"%d%d%d",&a,&b,&c);
if(a+b>c && b+c>a && c+a>b)
{if(a= =b&&b= =c) printf("dengbian\n");
else if(a= =b||b= =c||a= =c) printf("dengyao\n");
else if(a*a+b*b= =c*c||a*a+c*c= =b*b||b*b+c*c= =a*a)
printf("zhijiao\n");
else printf("yiban\n");
}
else printf("data error\n");
}
#include "math.h"
main( )
{float a,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if (fabs(a)<=1e-6) printf("no\n");
else if (fabs(disc)<=1e-6 ) printf("%8.4f\n",-b/(2*a));
else if (disc>1e-6 )
{ x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("%8.4f and %8.4f\n",x1,x2);
}
else
{ realpart=-b/(2*a);
imagpart=fabs(sqrt(-disc)/(2*a);)
printf("%8.4f+%8.4f i \n", realpart, imagpart);
printf("%8.4f-%8.4f i \n", realpart, imagpart);
}
}
例4. 给一百分制成绩,要求输出成绩等级'A','B','C','D','E'。90分以上为'A' ,80-89分为'B',70-79分为'C',60-69分为'D',60分以下为'E'。
main( )
{int score,temp;
char grade;
scanf("%d",&score);
if ((score>100)||(score<0))
printf("\ndata error\n");
else
{ if(score= =100)temp=9;
else temp=score/10;
switch (temp)
{case 9 : grade='A';break;
case 8 : grade='B';break;
case 7: grade='C';break;
case 6: grade='D' ; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: grade='E' ; }
printf("%d,%c\n",score,grade);
}
}