循环语句
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实。 我们可以使⽤ if 、 switch 实现选择结构,使⽤ for 、 while 、 do while 实现循环结构。
1, if语句循环
if循环语句的语句结构为:
if (表达式)
语句
在这里的,表达式相当于判断语句,如果表达式的结果为真(非0),则执行“语句”代码;表达式的结果为假(0),则不执行“语句”代码。
例子1.1:输⼊⼀个整数,判断是否为奇数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 1)
printf("是基数",num);
return 0;
}
注意:建议初始化为0.一个局部变量不初始化的时候,它的默认值是随机值,所以当对这个值进行计算的时候,未来如何变化,不好追踪。
2, else
如果某件事,不是a,就是b。这种情况我们就用if…else…语句。
该语句的语句结构为:
if (表达式)
语句1
else
语句2
例子2.1:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 1)
printf("%d 是奇数", num);
else
printf("%d 是偶数", num);
return 0;
}
3, 分支中包含多条语句(变成复合语句)
一般情况下 if 语句只能控制⼀条语句,就是语句1 :if语句为真,则打语句1;if语句为假,则不打印。
那如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤ {} 将代码括起来,
else 后也可以跟上⼤括号。(风格尽量统一,if与else都要用{}大括号)。如
例子3.1:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数并打印可以除二,否则打印偶数并打印不可以除二。
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 1)
{
printf("%d 是奇数", num);
printf("可以除二");
}
else
{
printf("%d 是偶数", num);
printf("不可以除二");
}
return 0;
}
4, 嵌套if
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
例子4.1:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
printf("输入的数字是0\n");
else
{
if (num > 0)
printf("输入的数字是正数\n");
else
printf("输入的数字是负数\n");
}
return 0;
}
这里在else语句中嵌套了if语句,如:
这里也可以这样表达:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
printf("输入的数字是0\n");
else if (num > 0)
printf("输入的数字是正数");
else
printf("输入的数字是负数");
return 0;
}
else后面一般不加条件,else if 一般要加条件。
当然,这里也可以这样表达:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
printf("输入的数字是0\n");
if (num > 0)
printf("输入的数字是正数");
if (num < 0)
printf("输入的数字是负数");
return 0;
}
列4.2:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:⾮正数。
#include<stdio.h>
int main()
{
int num = 1;
scanf("%d", &num);
if (num > 0)
{
if (num % 2 == 0)
printf("偶数");
else
printf("奇数");
}
else
printf("非正数");
return 0;
}
列4.3:输入年龄
如果年龄 < 18岁,打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中⽼年"
如果年龄在60岁⾄89岁打印"⽼年"
如果90岁及以上打印"⽼寿星"
则
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年");
else
{
if (age <= 44)
printf("青年");
else
{
if (age <= 59)
printf("中老年");
else
{
if (age <= 89)
printf("老年");
else
printf("老寿星");
}
}
}
return 0;
}
缩减后可为
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年");
else if (age <= 44)
printf("青年");
else if (age <= 59)
printf("中老年");
else if (age <= 89)
printf("老年");
else
printf("老寿星");
return 0;
}
也可以这样表达
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年");
if (18 <= age && age<= 44)
printf("青年");
if (45 <= age && age<= 59)
printf("中老年");
if (60 <= age && age<= 89)
printf("老年");
if (age >= 90)
printf("老寿星");
return 0;
}
注意:
条件判断:在C语言中,不能直接使用
if (18 <= age <= 44)//错误
**这样的表达式来判断年龄是否在某个范围内。这会导致逻辑错误。正确的做法是分开判断,**例如
if (18 <= age && age <= 44)//正确
5, 悬空else问题
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。