1.if语句
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
}
//代码2
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
//代码3
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("少年\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
//解释一下:
//如果表达式的结果为真,则语句执行。
//在C语言中如何表示真假:0表示假,非0表示真。
- if语句如果不加{},那么就默认只控制一条语句,{}就是一个代码块
1.else的匹配原则
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
- 按照如上方式书写的代码,实际输出的是空,因为else的匹配原则是和离它最近的if匹配,这样的书写方式很不规范,会给人造成很大的误解
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
- 这样才是清晰明了的代码
2.例题
输出1--100里面的所有奇数
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 100)
{
if (i % 2 == 1)
{
printf("%d\n", i);
}
i++;
}
return 0;
}
2.switch语句
基础语法:
switch(整型表达式[int])
{
case 整形常量表达式:
语句;
}
例题:判断星期几
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default: //当输入错误时
printf("选择错误\n");
break;
}
return 0;
}
- 如果case里面的情况是重复的,那么可以不使用break。如下所示:
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("选择错误\n");
break;
}
return 0;
}
例题 :通过此题可以充分理解switch语句
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n) //此时n=1 case1可以执行,因为没有break,所以之后的也可以执行
{
case 1: m++;
case 2: n++;
case 3:
switch (n) //此时n=2 case1就不能执行了,但是case2可以执行
{//switch允许嵌套使用
case 1: n++;
case 2:
m++; n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
3.while循环语句
基础语法:
while(表达式)
循环语句;
示例:输出1--10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
break的作用
在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
continue的作用
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
具体案例
#include <stdio.h>
int main()
{
int n = 1;
while (n <= 10)
{
if (5 == n)//当n=5的时候,进入if的判断,continue就将后面的所有代码跳过,回到while的判断条件中,造成了死循环
{
continue;
}
printf("%d ", n);
n++;
}
return 0;
}
- 如果想要输出1---10但是没有5,那么就需要更改一下
int main()
{
//1 2 3 4 6 7 8 9 10
int n = 0;
while (n < 10)
{
n++;
if (5 == n)
{
continue;
}
printf("%d ", n);
}
return 0;
}