一、if语句
有三种形式:
① if(表达式)
语句
int a=5;
if (a > 0)
puts("大于0");
② if(表达式)
语句
else
语句
int a=5;
if (a > 0)
puts("大于0");
else
puts("小于等于0");
③
if(表达式)
语句
else if (表达式)
语句
................(可以有多个else if )
else
语句
int main() {
int a;
scanf("%d", &a);
if (a > 0)
puts("大于0");
else if (a < 0)
puts("小于0");
else
puts("等于0");
return 0;
}
当if后面的表达式为真或者不为0时,执行后面的语句,否则就往下走👇
int main() {
int i = 5;
if (i == 5)
puts("真");
if (i = 6)
puts("不为0");
if (i == 5)
puts("i为5");
return 0;
}
这里第①个if语句和第②个都会执行,因为第一个是判断是否相等,相等为真,执行,不相等为假;第二个是赋值,只要不是赋值为0,结果就不为0,都执行;第三个因为②if中已经给i赋值为6,所以i≠5,这个表达式为假,不执行。
语句是最简单的情况,这里的语句都可以换成用{ }的符合语句,这样可以执行多个语句,还能增强代码可读性,以及减少错误👇
int a;
scanf("%d", &a);
if (a > 0)
{
puts("大于0");
}
else if (a < 0)
{
puts("小于0");
}
else
{
puts("等于0");
}
在if else中,else会匹配离它最近的if 👇
int i = 5;
if (i < 0)
if (i > 0)
puts("hhh");
else
puts("www");
在这种情况下,执行结果为空,因为else与第②个if匹配,第二个if属于第一个if的语句,不执行。
想要else执行只需加上个{ }就能解决,所以日常我们应该使用{}减少可能出现的错或者减少阅读不便。👇
int i = 5;
if (i < 0)
{
if (i > 0)
puts("hhh");
}
else
puts("www");
二、switch语句
基本结构为:
switch(整形表达式)
{
case 整形常量表达式:
语句;
.............
}
#include <stdio.h>
//输出对应星期
int main() {
int a;
scanf("%d", &a);
switch (a)
{
case 1:
puts("星期1");
case 2:
puts("星期2");
case 3:
puts("星期3");
case 4:
puts("星期4");
case 5:
puts("星期5");
case 6:
puts("星期6");
case 7:
puts("星期7");
}
return 0;
}
对于上述代码,当我们输入为6 输出的是 星期6、星期7;因为我们case只是提供一个入口,符合情况进入就会执行下面的所有,要想停止,需要引入break 👇
switch (a)
{
case 1:
puts("星期1"); break;
case 2:
puts("星期2"); break;
case 3:
puts("星期3"); break;
case 4:
puts("星期4"); break;
case 5:
puts("星期5"); break;
case 6:
puts("星期6"); break;
case 7:
puts("星期7"); break;
}
switch语句还可以进行如下操作,多个case执行同一个语句;👇
例如:1~5 输出weekday 6~7 输出weekend
int a;
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
puts("weekday"); break;
case 6:
case 7:
puts("weekend"); break;
}
假如有个大马虎输入了8,没有与8匹配的选项,就会等到空,如果我们想让它执行一些出了case选项的东西,就用default 👇
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
puts("weekday"); break;
case 6:
case 7:
puts("weekend"); break;
default:
puts("请输入1-7"); break;
}
这样只要输入的不是case包括的选项,就会执行default后面的语句
switch(整形表达式),如果换成double型表达式,就会报错;当你输入的判断型的表达式时a>6,这时就是真为1,假为0
case 整形常量 ,如果换成n,也会报错,因为n是变量;换成字符可以,因为字符存放的时候是以整数存放的;
break只能跳出自己所在的switch语句(所在的{ });👇
int main() {
int i = 1;
switch (i) {
case 1:i++;
case 2:
switch (i)
{
case 1:i++;
case 2:i++;
break;
case 3:i++;
}
case 3:i++;
case 4:
i = 10 + i;
break;
}
printf("%d", i);
return 0;
}
求 i 最后的值
答案:14