一.分支语句
1.if语句
if语句的使用方法如下
#include<stdio.h>
int main()
{
if(表达式)
语句1;
}
if括号里面的表达式如果为真,则执行语句1,否则不执行,跳过语句1,在c语言里面,默认非零为真,0为假,如果表达式直接是1,也会成立,接着执行语句1.但是if后面只能执行一条语句,若需要使用多条语句,应用大括号把这些语句括起来组成符合语句。
#include<stdio.h>
int main()
{
int a = 1;
if (a)
printf("hehe\n");
printf("haha\n");
}
#include<stdio.h>
int main()
{
int a = 0;
if (a)
printf("hehe\n");
printf("haha\n");
}
上面四张截图,第一段代码先把a初始化为1,那么if语句成立,就会执行后面的一条语句——打印hehe然后换行,而打印haha并不是在if语句里面的,即使if语句不成立也会执行(对应第二段代码),因为并没有用大括号是它们成为一条复合语句
2.二分支结构和if—else语句
二分支结构的形式主要有两种,一种是表达式成立执行语句1,否则就执行语句2,另一种是语句成立则执行语句1,否则什么也不做。
if—else的一般形式为:
if(表达式)
语句1;
else
语句2;
#include<stdio.h>
int main()
{
int a = 1;
if (a)
{
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
注:其实在上述代码中if和else后的语句是不用加大括号的,毕竟要执行的只有一条语句,但是个人认为最好加上,养成良好的代码习惯,避免后续需要在if—else语句中加入其他需要执行的语句时出现逻辑错误。
执行流程:先求解表达式,如果表达式的值为‘真’,就执行语句1;否则(即表达式为‘假’),就执行语句2。语句1和语句2总要执行一个,但是不会都不执行。
上面指的另外一种实际上就是省略else语句,形式为:
if(表达式)
语句1;
3.多分支语句和else—if语句
else—if语句是最常用的实现多分支的方法,其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
……
else if(表达式n-1)
语句n-1;
else
语句n;
它的执行流程为是,首先求解表达式1,如果表达式1的值为‘真’的话,则执行语句1,并终止整个分支语句,如果表达式1的值为‘假’的话,接着判断表达式2,如果表达式2的值为‘真’的话,则执行语句2,并终止整个分支语句,如果表达式2的值为‘假’的话,则以此类推,判断表达式3。如果表达式1到表达式n-1的值都为‘假’的话,则执行语句n,也就是说多分支else—if语句和二分支if—else语句类似,众多语句中总要执行一条语句,且仅此一条语句,但不会都不执行。
下面就是一个else—if语句的使用例子
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));
int n = rand() % 10;
int guess = 0;
scanf_s("%d", &guess);
if (guess > n)
{
printf("猜大了");
}
else if (guess < n)
{
printf("猜小了");
}
else
{
printf("猜中了");
}
return 0;
}
这个代码的逻辑如下:
首先先创建一个随机数n(1<=n<=9),然后输入你要猜的数字,如果大于随机数n就会输出猜大了,小于的话就会输出猜小了,都不成立说明输入的数字等于n——猜对了,输出猜中了.
由于在这里我用的是vs2022,所以使用的是scanf_s
scanf_s
是 Microsoft 提供的一个安全版本的 scanf
,旨在防止某些类型的缓冲区溢出攻击。它是 Microsoft 特有的,并不是标准 C 的一部分。其基本语法与 scanf
类似,但要求为所有字符串和字符数组参数提供缓冲区大小。
scanf_s的具体使用方法在后续发布的文章中详细说明一下使用方法和易错点。