c语言是【结构化】的程序设计语言
【结构化】:顺序,选择,循环结构
c语句可分为5类
1·表达式语句
2·函数调用语句
3·控制语句 (分支,循环,转向)
4·复合语句
5·空语句
一.分支语句
1. if语句
int main()
{
int age ;
scanf("%d", &age);
if (age < 18) //if语句默认控制一条语句,有多条语句时用大括号括起来
{
printf("hehe\n");
printf("nb\n");
}
//else if (18 <= age < 25) 这是错误写法,假设age=10.接下来变为else if (0 < 25),可以进入循环
else if (18 <= age && age < 25)//正确操作,用&&
{
printf("大学生");
}
else
printf("ok");
return 0;
}
此外,c语言不会通过缩进来判断else跟的哪个if
else会跟离他最近的if匹配
下面是一段具有迷惑性的代码
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
上段代码实际上可以看成
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
更直观地,也可以看成
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
也可以写成很逆天的形式
int main()
{
int a = 0;
int b = 2;
if (1 == a) if (2 == b) printf("hehe\n"); else printf("haha\n");
return 0;
}
总的来说,第一条if语句使下一条if语句失效,故程序啥也没输出
moreover,return会结束一个函数,利用此特性可以省略else
但是阅读程序时候容易出错
int test()
{
int a = 3;
if (3 == a)
return 1; //在此处省略else
return 0;
}
int main()
{
int r = test();
printf("%d\n", r);
return 0;
}
最后,if(condition)里condition的常量建议写==的左边
2.switch语句
常常用于多分支的情况
且switch()括号内为整形表达式,否则报错
case后面更加严格,只能是整形常量表达式(可以放字符)
//简单示范
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("1");
break; //没有break会继续往下走
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
default:
printf("incorrect input")
break;
}
return 0;
}
一种简化方式
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday");
break;
case 6:
case 7:
printf("weekend");
break;
default:
printf("incorrect input");
break;
}
return 0;
}