if选择结构
if 语句的三个格式
第一种格式:
if(表达式){
条件成立执行的语句
}
其他语句
第二种格式:
if(表达式){
条件成立执行的语句
}else{
条件不成立执行的语句
}
其他语句
第三种格式:
if(表达式1){
表达式1条件成立执行的语句
}else if (表达式2) {
表达式2条件成立执行的语句
}else {
以上都条件都不成立执行的语句
}
if 语句的省略大括号格式
如果if 语句省略大括号,那么只有紧随其后的那条语句受到控制,并且if 语句后面不能定义变量
//会产生作用域干扰
int age = 18;
if(age >= 10)
int num = 5;
return 0;
-
{ }可以单独出现,{ }单独出现时代表代码块
{ }代码块的作用是隔离变量,代码块内部的局部变量在{ }外面访问不到,只有在该代码块内部才能访问该变量,所以起到了隔离变量的作用
int main()
{
{
int age = 88;
//printf("%i\n", age);
}
printf("%i\n", age);
return 0;
}
- 在企业开发中常见的格式
2.2.1 在企业开发中,如果要判断是否相等,一般都会把常量写在变量前面.
2.2.2 在企业开发中,一定不要使用 == 来判断两个小数是否相等,因为小数可能会出现丢失精度问题,如果需要判断建议使用 >= 或者 <= 或者将小数转换为字符串在比较.
int age = 10;
if(18 == age){
printf("%i\n", age);
}
return 0;
- if else 语句去除大括号匹配问题点
注意点: 如果if else 省略大括号时候,else 会匹配距离自己最近的if,但是有一个前提条件是该if没有被匹配,编译器会把if else 看做是一个整体
if(0)
if(1)
printf("A\n");
else //会匹配if(1)
printf("B\n");
else //会匹配if(0),不会匹配if(1),因为if(1)已经被上面的else匹配过了
if(1)
printf("C\n"); //结果是C
else //会匹配if(1)
printf("D\n");
return 0;
- 排序问题
/*
* 排序(相邻的两个变量进行比较,交换位置即可)
*
* 特点: 经过一轮两两比较之后,最值会出现在最后
*
* 由于最值已经出现在最后,所以下一轮就不用比较最后一个值了
* 只有经过所有的比较之后,第一个变量没有可比较的变量,才算排序完成
*
*/
/*
* 要求用户输入四个整数,排序之后输出,由小到大
*/
//1. 定义四个变量接收参数
int a = -1, b = -1 , c = -1, d = -1;
//2. 提示用户输入四个整数
printf("请输入四个整数,中间用逗号隔开,然后按回车\n");
//3. 从键盘接收四个整数
scanf("%i,%i,%i,%i", &a, &b, &c, &d);
//4. 对四个整数依次排序
if(a > b){
int temp = a;
a = b;
b = temp;
}if (b > c) {
int temp = b;
b = c;
c = temp;
}if (c > d) { //比较出最大值放在最后
int temp = c;
c = d;
d = temp;
}if (a > b) {
int temp = a;
a = b;
b = temp;
}if (b > c) { //比较出最大值放在第三位
int temp = b;
b = c;
c = temp;
}if (a > b){ //比较出最大值放在第二位
int temp = a;
a = b;
b = temp;
}
//5. 由小到大输出
printf("%i,%i,%i,%i\n", a, b, c, d);
return 0;