运算符 | 描述 | 实例 (A=10, B=20) |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 为假。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
表达式
关系运算符
表达式
关系表达式的值是一个逻辑值,即“真”或“假”。1代表真,0代表假;一个非零的数值认作为“真”。
&&
逻辑与||
逻辑或!
逻辑非&&
和||
是双元/目运算符,它要求有两个运算!
是一元/单目运算符,它要求有一个运算量。(a>b) || (x>y)
!(a>b)
表达式
逻辑运算符
表达式
计算下列的结果
#include <stdio.h>
void main() {
char c = 'k';
int i = 1, j = 2, k = 3;
float x = 3e+5, y = 0.85;
printf("%d,%d\n", !x * !y, !!!x);
printf("%d,%d\n", x ||j && j - 3, i < j && x < y);
printf("%d,%d\n",i==5 && c &&(j=8),x+y||i+j+k);
}
判断用year表示的某一年是否是闰年。
#include <stdio.h>
void main() {
int year;
scanf_s("%d", &year);
printf("%d\n", year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
前二种形式的if语句一般都用于两个分支的情况。 有多个分支选择时,可采用if-else-if语句。
输入两个数a,b,判断并输出其中较大的数。
#include <stdio.h>
void main() {
int a, b, max;
scanf_s("%d %d", &a, &b);
max = a;
if (max < b) max = b;
printf("max=%d\n", max);
}
#include <stdio.h>
void main() {
int a, b, max;
scanf_s("%d %d", &a, &b);
if (a > b)
max = a;
else
max = b;
printf("max=%d\n", max);
}
例5:已知百分制成绩mark,显示对应的五级制成绩。 90—100优秀 80—89良好 70—79中等 60—69及格 <60不及格
#include <stdio.h>
void main() {
double score;
printf("请输入分数:\n");
scanf_s("%lf", &score);
if (score < 60)
printf("(不及格)\n");
else if (score < 70)
printf("(及格)\n");
else if (score < 80)
printf("(中等)\n");
else if (score < 90)
printf("(良好)\n");
else if(score<=100)
printf("(优秀)\n");
else printf("(输入错误\n");
}
if(x>b)
if(a=5)
if(b)
语句;只要表达式的值为非0,即为“真”。if(a=b) //把 b 的值赋给 a,如果非0则输出该值
printf ("%d",a);
else
printf("a=0");
if (a>b) max=a;
if (a>b)
{a++; b++;}
else
{a--; b--;}
输入两个实数,按代数值由小到大的顺序输出这两个数。
解题思路:
#include <stdio.h>
void main() {
float a, b,c;
scanf_s("%f %f", &a, &b);
if (a < b)
{
c = a;
a = b;
b = c;
printf("%.2f %.2f\n", a, b);
}
else
printf("%.2f %.2f\n", a, b);
}
输入3个数a,b,c,要求按由小到大的顺序输出。
解题思路:
#include <stdio.h>
void main() {
float a, b, c, d;
scanf_s("%f %f %f", &a, &b, &c);
if (a > b)
{
d = a; a = b; b = d;
}
if (a > c)
{
d = a; a = c; c = d;
}
if ( b> c)
{
d = b; b = c; c = d;
}
printf("%.2f %.2f %.2f\n", a, b, c);
}
比较两个数的大小关系
#include <stdio.h>
void main() {
float a, b;
scanf_s("%f %f", &a, &b);
if (a != b)
if (a > b)
printf("%.2f > %.2f\n", a, b);
else
printf("%.2f < %.2f\n", a, b);
else
printf("%.2f = %.2f\n", a, b);
}
条件运算符: ?
:
表达式1
?
表达式2
:
表达式3
(如果表达式1为“真”,返回表达式2,否则返回表达式3)。if(a>b)
max=a;
else
max=b;
// 相当于
max = (a>b)? a : b;
输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到结果。
#include <stdio.h>
void main() {
char x,y;
scanf_s("%c",&x);
y = (x >= 'A'&& x <= 'Z') ? (x + 32) : x;
printf("%c\n", y);
}