ni在C语言中,有三种结构,分别是顺序结构,选择结构,循环结构。
一、if语句
1.1
if格式:
if(表达式)
语句 //注意要对齐缩进
//表达式为真则执行
接下来做一个简单的例子:判断一个数字是否为奇数
思路:定义一个变量,使它除2取余
实现:
#include <stidio>
int main()
{
int num = 0;
scanf("%d",&num);
if(num % 2 == 1)
printf("是奇数\n");
return 0;
}
1.2
if - else
当if需要有多个条件的时候,需要用else来表达
具体格式为:
if(表达式)
语句
else
语句
做一个实例:现在做一个实例,上面我们已经做个做一个奇数的代码,那么如果判断,不是奇数就是偶数的时候,我们需要用else来实现
代码如下:
#include <stidio>
int main()
{
int num = 0;
scanf("%d",&num);
if(num % 2 == 1)
printf("是奇数\n");
else
printf("是偶数\n"); //注意格式缩进,else应该和if对齐
return 0;
}
接下来,我们在做一个案例:判断一个人是否成年:
和判断奇数大抵相同
代码如下:
#include <stidio>
int main()
{
int age = 0 ;
scanf("%d",&age);
if(age>=18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}
注意:做循环操作的时候一定要注意缩进
1.3
多种循环结构
if else语句只能控制一条语句,如果想要If控制多条语句,就应把要控制的语句用{}括起来。
1.4
嵌套if
if下面可以用多个else连用
接下来做一个案例:
判断输入的一个数是0,正数还是负数
代码如下:
#include <stdio.h>23
int main(){
int num = 0;
scanf("%d", &num);
if(num == 0)
printf("输⼊的数字是0\n");
else if(num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
printf("输⼊的数字是正数\n");
else
printf("输⼊的数字是负数\n");
return 0;
}
接下来做一个练习:
输⼊⼀个⼈的年龄
如果年龄18岁,打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中⽼年"
如果年龄在60岁⾄89岁打印"⽼年"
如果90岁以上打印"⽼寿星"
思路:根据条件可以得出有五个条件,也就是一个if 四个else
代码如下:
#include <stdio.h>
int main(){
int age = 0 ;
scanf("%d",&age);
if(age<18)
printf("少年");
else if (age <= 44)
printf("青年\n");
else if(age <= 59)
printf("中老年\n");
else if(age <= 90)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
1.5
悬空else: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 ;
}
这里很容易看成打印haha,但是其实什么都不打印
因为这里else是与内层if最近,所以当a != 0;时函数已经结束。
二、关系操作符
2.1
C语言用于比较的表达式,称为:”关系表达式“,主要有下面6个:
> 大于
< 小于
> = 大于等于
<= 小于等于
== 等于
!=不相等
系表达式通常返回 0 或 1 ,表⽰真假。0假1真。
2.2
多个关系运算符不宜连用:
i < j < k
该表达式从左到右运算,如果i<j,那么则不执行下一个运算。
三、条件操作符
条件操作符也被称为三目操作符,格式如下:
exp1 ? exp2 : exp3
//如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
//exp1 为假, 就计算exp3
接下来做一个案例:
找出两个数中的最大值:
使用if后,代码如下:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
if(a > b)
printf("最大值为a\n");
else if (a < b)
printf("最大值为b");
else
printf("相等");
return 0 ;
}
用三目操作符改变之后为:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = a > b ? a : b; //a是否大于b?如果大于b那么就输出a否则输出b
printf("%d\n", m);
return 0;
}
四、
逻辑操作符:
!取反
| | 或运算,一真为真
&&与运算,都真为真
4.1
取反运算符
定义一个变量flag,判断flag真假执行相应的条件:
#include <stidio.h>
int main()
{
int flag = 0 ;
if(!flag)
{
printf("Ture\n");
}
return 0;
}
4.2与运算符
&&与运算,代码如下:
include <stdio.h>
int month = 0 ;
scanf("%d",&month);
if(month >= 3 && month <= 5)
{
printf("春季\n");
}
4.3
或运算,代码如下:
int month = 0;
scanf("%d", &month);
if(month == 12 || month==1 || month == 2)
{
printf("冬季\n");
}
4.5
短路
C语言先对左侧的表达式求值,再对右边的表达式求值,如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。
五、switch语句
5.1
switch也是一种分支结构,⽤于判断条件有多个结果的情况。
格式为:
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
有两点需要注意:
switch 后的 expression 必须是整型表达式
case 后的值,必须是整形常量表达式
接下来我们来看一下和if函数的差别:
计算一个数被3除后的余数:
先看一下if函数
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}
那么用switch如下:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
有两点要注意:
case 和后边的数字之间必须有空格
每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句
如果在case下没有break那么在执行一个case后会继续执行知道结束或者跳出。
5.2
default
类似于py中的else,如果在其中都不能执行,需要有一个结束语句。
注意:default可以放在任意位置
接下来我们来做一个实例:
输⼊⼀个1~7的数字,打印对应的星期几
例如:
输⼊:1输出:星期⼀
输⼊:2输出:星期⼆
输⼊:3输出:星期三
输⼊:4输出:星期四
输⼊:5输出:星期五
输入:6输出:周末
输入:7输出:周末
代码如下:
#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;
}
return 0;
}
若将周一到周五改成工作日,可以简化为:
#include <stdio.h>
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;
}
return 0;