目录
前言:
C语言是一门结构化的程序设计语言,这里的结构指的是顺序结构,选择结构,循环结构,C语言是能够实现这三种结构的,其实我们仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
我们用 if,switch 实现分支结构,使用 for, while, do while 实现循环结构。
if语句
-
if:
if语句的语法形式如下:
if( 表达式 )
语句
表达式成立(为真),语句执行;表达式不成立(为假),则语句不执行。
在C语言中,0 为假,非0 为真,也就是表达式的结果为0,表示语句不执行,表达式的结果非0,则执行语句。
例:输入整数,判断其是否为奇数
#include<stdio.h>
inmt main()
{
int num = 0;
scanf("%d",&num);
if(num%2==1)
printf("%d是奇数”,num);
return 0;
}
-
else:
如果一个数不是奇数,那一定是偶数了,随机一个数字,如何判断它是奇数还是偶数,还是非奇非偶。看例子:
#include<stdio.h>
int main()
{
int x;
scanf_s("%d", &x);
if (x % 2 == 1)
printf("%d是奇数", x);
else
printf("%d是偶数", x);
return 0;
}
这是基础判断奇数偶数的代码,等咱学了 while 在给它升级一波。
-
分支中包含的多条语句:
默认 if 和 else 都是控制着一条语句,例:
{
int age = 0;
scanf_s("%d", &age);
if (age >= 18)
printf("成年了\n");
printf("可以恋爱了!\n");
return 0;
}
照输出结果来看的话,18岁非能否恋爱的标准,if语句仅判断了你是否成年,printf("可以恋爱了!");是独立存在的,不受if语句的影响。那我要想影响该怎么办呢?这时候 { } 的作用就体现了喔。例:
{
int age = 0;
scanf_s("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以谈恋爱了!\n");
}
else
{
printf("未成年\n");
printf("不可以早恋喔!\n");
}
return 0;
}
-
嵌套if:
在if else 语句中,else 可以与另一个 if 语句连用,构成多重判断。
例:
#include<stdio.h>
int main()
{
int x;
scanf_s("%d", &x);
if (x == 0)
printf("输入的值是0\n");
else if (x > 0)
printf("输入的值是正数\n");//这里的if 相当于嵌套在else语句中,形成了嵌套结构
else
printf("输入的值是负数\n");
return 0;
}
例:
#include<stdio.h>
int main()
{
int x;
scanf_s("%d", &x);
if (x > 0)
{
if (x % 2 == 0)
printf("偶数\n");
else
printf("奇数\n");//这个 { } 里面的内容就是嵌套的
}
else
printf("非正数\n");
return 0;
}
输入一个整数,先判断正负,如果为正,在进行奇偶性的判断;若为负,则直接输出。
悬空else问题:
如果有多个 if 和else,可以记住这样的一条原则,else总是跟最接近的if匹配。
例:
#include<stdio.h>
int main()
{
int x = 0;
int y = 2;
if (x == 1)
if (y == 2)
printf("vocal\n");
else
printf("juice\n");
return 0;
}
运行结果:什么都没有。
原因:当出现多个 if 和 else 时,记住:else 总是和最近的if匹配。所以当x==1为错误时下面的代码并不会执行,也就不会有y判断的过程。
操作符及运算符:
关系操作符:
在C语言中用于比较的运算符就叫关系运算符。
- > 大于运算符
- >= 大于等于运算符
- < 小于运算符
- <= 小于等于运算符
- == 相等运算符
- != 不相等运算符
a == b;
a != b;
a < b;
a > b;
a <= b;
a >= b;
关系表达式通常返回 0 或 1,表达真假。(C语言中 0 为假,非 0 为真)
关系式常常用于 if 或 while 结构。
if(x==3){
printf("x is 3.\n");
}
注意:相等运算符== 和赋值运算符 = 是两个含义完全不同的运算符,不要混淆。
还有一点需要注意的是,多个关系运算符不宜连用。
i < j < k;
如上,表达式没错,但不会达到咱想要的结果,即不能保证,变量 j 在 i 和 k 之间。 因为关系运算符是从左到右计算,所以实际执行的是下面的表达式。
(i < j)< k
上面的式子中,i < j 返回值 0 或 1,所以最终是 0 或·1与变量 k 进行比较。正确的写法如下:
i < j && j < k
例:
这里咱就可以通过&&达到想要的结果即:输入18-36之间的数字时打印青年。
#include<stdio.h>
int main()
{
int x;
scanf_s("%d", &x);
if (18 <=x&&x<= 36)
{
printf("青年");
}
return 0;
}
条件操作符:
条件操作符也称为三目操作符,需要三个操作数
exp1? exp2 ? exp3
它的计算逻辑是:如果exp1为真,exp2计算,计算的结果是整个表达式的结果;如果exp1为假,exp3计算,计算结果为整个表达式的结果。
逻辑操作符:&&,||,!
逻辑运算符提供逻辑判断功能,用于构建更加复杂的表达式,主要有下面三个运算符。
- !:逻辑取反运算符(改变单个表达式的真假)
- &&:与运算符,就是并且的意思(全真为真,一假全假)
- ||:或运算符,就是或者的意思·(题真为真,全假为假)
注意:在C语言中,0为真,非0为假。
重要的事情要多重复,这次就到这里吧,期待下次一起学习。