The Second day learning(C语言 if else)
BOOL,布尔类型,占1个字节,非真即假的数据类型,只有两个值YES和NO
定义BOOL类型的变量
BOOL isGirl = NO;//NO = 0
BOOL isBoy = YES;//YES = 1
输出BOOL类型的变量使用%d
printf("%d, %d\n", isGirl, isBoy);
C语言规定:非0即为真
BOOL flag = 0;//假
flag = 10;//真
flag = -10;//真
关系运算符
int m = 5,n = 10;
大于 >
BOOL result = m > n;
printf("%d\n", result);
小于 <
result = m < n;
printf("%d\n", result);
大于等于 >=
result = m >= n;
printf("%d\n", result);
小于等于 <=
result = m <= n;
printf("%d\n", result);
等于 ==
result = m == n;
printf("%d\n", result);
不等于 !=
result = m != n;
printf("%d\n", result);
逻辑运算符
int i = 3, j = 5, k = 7;
逻辑与, &&, 并且
&& 左右两侧, 同时为真才为真, 只要一个为假即为假
result = (i <= j) && (j == k);
printf("%d\n", result);
逻辑或, ||, 或者
||左右两侧, 同时为假才为假, 只有一个为真即为真
result = (j != k) || (j < k);
printf("%d\n", result);
逻辑非, !, 颠倒是非
result = !(i != k);
printf("%d\n", result);
逻辑短路
1.逻辑与的短路, &&左侧为假, 右侧不参与运算
int c = 0;
result = i > k && ++c;
printf("c = %d\n", c);
2.逻辑或的短路, ||左侧位真, 右侧不参与运算
result = (i + k) >= j || c++;
printf("c = %d\n", c);
C语言的程序结构
1.顺序结构, main函数是程序入口, 程序执行是从上往下, 从左向右, 一次执行
2.分支结构, 程序执行到某个位置, 进行条件判断, 根据不同的结果, 执行不同的操作
3.循环结构, 程序执行到某个位置, 反复执行某个操作
分支语句
if语句
第一种if与句形式
/*
if (条件表达式) {
语句1;
语句2;
...
}
*/
执行顺序: 先判断条件表达式是否为真, 为真则执行大括号中的语句, 为假则不执行
/*
char s;
printf("输入一个字符:");
scanf("%c", &s);
if (s == 'm') {
printf("男性\n");
}
if (s != 'm') {
printf("女性\n");
}
*/
if 语句的第二种形式
/*
if (条件表达式) {
语句1;
...
} else {
语句2;
...
}
*/
执行顺序: 先判断条件表达式, 如果为真, 执行第一个大括号中的语句, 如果为假, 执行第二个大括号中的语句
/*
int a1 = 0, a2 = 0;
printf("输入两个整数a1 a2:");
scanf("%d %d", &a1, &a2);
if (a1 >= a2) {
printf("max = %d\n", a1);
} else {
printf("max = %d\n", a2);
}
*/
if语句的第三种形式
/*
if (条件表达式1) {
语句1;
语句2;
...
} else if(条件表达式2) {
语句1;
语句2;
...
} else {
语句1;
语句2;
...
}
*/
执行顺序: 先判断条件表达式1, 如果成立, 执行if大括号中的语句; 如果不成立, 再判断条件表达式2, 如果成立, 执行else if大括号中的语句; 如果不成立, 就执行else后面大括号中的语句
注: 这种结构, 必须以if开头, 以else结束, 中间写else if, 并且else if可以有多个
/*
float score = 0.0;
printf("请输入一个成绩:");
scanf("%f", &score);
if (score >= 0 && score <= 100) {
if (score >= 90 && score <= 100) {
printf("优\n");
} else if(score >= 80) {
printf("良\n");
} else if(score >= 70) {
printf("中\n");
} else if(score >= 60) {
printf("差\n");
} else {
printf("不及格\n");
}
} else {
printf("地球不适合你!\n");
}
*/
/*
条件运算符 ? :
格式
条件表达式 ? 表达式1 : 表达式2;
执行顺序: 先判断条件表达式, 如果成立, 返回表达式1; 不成立, 返回表达式2
int num1 = 5, num2 = 10;
int max = 0, min = 0;
//把num1和num2中的最大值赋给max
// if (num1 > num2) {
// max = num1;
// } else {
// max = num2;
// }
max = num1 > num2 ? num1 : num2;
min = num1 < num2 ? num1 : num2;
printf("max = %d min = %d\n", max,min);
switch语句
/*
switch (整型表达式) {
case 值1:
执行语句
break;
case 值2:
执行语句
break;
case ...:
...
break;
default:
break;
}
*/
int count = 0;//酸奶的瓶数
printf("买几瓶酸奶?(1瓶3元,3瓶10元)");
scanf("%d", &count);
switch (count) {
case1:
printf("消费了3元\n");
break;
case3:
printf("消费了10元\n");
break;
default:
printf("消费了%d元\n", count * 3);
break;
}
注: case中要加break
注: 如果在case内部定义变量, 需要加大括号