1.逻辑类型和运算
不知道bool的类型,它们仍然是整数,所以只能printf出整数,而不是ture或false
归纳一下运算符的优先级
括号>单目>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符>逗号运算符
条件运算符
条件运算符的优先级高于赋值运算符,但是低于其他运算符
条件运算符是自右向左结合的
逗号运算
2.级联和嵌套的判断
- 嵌套的if-else
例:输出三个数的最大值
#include <stdio.h>
int main()
{
int a, b, c;
printf("请输入三个数:");
scanf_s("%d %d %d", &a, &b, &c);
int max = 0;
if (a > b) {
if (a > c) {
max = a;
}
else {
max = c;
}
}
else {
if (b > c) {
max = b;
}
else {
max = c;
}
}
printf("三个数中最大值为%d", max);
return 0;
}
else总是与最近的if相匹配(加了大括号会不一样)
缩进不能暗示if-else的匹配
2.级联的if-else
例:分段函数
#include <stdio.h>
int main()
{
int x = 0;
int y = 0;
printf("请输入数字:");
scanf_s("%d", &x);
if (x > 0) {
y = 2 * x;
}
else if (x == 0) {
y = 0;
}
else {
y = -1;
}
printf("值为%d", y);
return 0;
}
3.多路分支switch-case
例:判断成绩
#include <stdio.h>
int main()
{
int x = 0;
printf("请输入分数:");
scanf_s("%d", &x);
x /= 10;
switch (x) {
case 10:
case 9:
printf("你的成绩为A");
break;
case 8:
printf("你的成绩为B");
break;
case 7:
printf("你的成绩为C");
break;
case 6:
printf("你的成绩为D");
break;
default:
printf("你的成绩为E");
break;
}
return 0;
}
4.循环的例子
#include <stdio.h>
int main()
{
int x = 0;
int ret = 0;
scanf_s("%d", &x);
int t = x;
while (x > 1) {
x /= 2;
ret++;
}
printf("log2 of %d is %d", t, ret);
return 0;
}
#include <stdio.h>
int main()
{
int x = 0;
double count = 0;
double sum = 0;
printf("请输入数字:");
scanf_s("%d", &x);
while (x != -1) {
sum += x;
count++;
printf("请输入数字:");
scanf_s("%d", &x);
}
printf("这些数的平均数为%f", sum / count);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
int random = rand() % 100;
int number = 0;
int count = 0;
do {
printf("请输入1到100的数:");
scanf_s("%d", &number);
if (number < random) {
printf("小了\n");
}
else if (number > random) {
printf("大了\n");
}
count++;
} while (number != random);
printf("恭喜你猜中了,次数为%d次",count);
return 0;
}
整数逆序
#include <stdio.h>
int main()
{
int x = 0;
int f = 0;
int t = 0;
scanf_s("%d", &x);
while (x > 0) {
f = x % 10;
t = t * 10 + f;
x /= 10;
}
printf("%d", t);
return 0;
}