🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《C语言》 ✨ 永远相信美好的事情即将发生
C语言是结构化的程序设计语言, 结构指的是 顺序,选择,循环,三种结构,我们可以使用 if–else, switch实现选择结构 , 使用 while, for, do_while实现循环结构 ,下面让我们一起来学习一下这些知识吧
1语法形式:
if( 表达式 )
语句1
else
语句2
注:表达式成立(为真),执行绑定的语句,不成立 (为假),if语句不执行,执行else语句。2.例题.输入一个数判断是否为奇数#include <stdio.h>
int main()
{
int num;
scanf("%d", &num);
if (num % 2) //奇数模上2不等于0
printf("%d是奇数",num);
else
printf("%d不是奇数",num);
return 0;
}//执行结果如下 .

3.分支中包含多条语句 默认if和else语句均只控制一条语句,如需多条语句需要加上*{ }* 例:
#include <stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以谈恋爱了\n");
}
return 0;
}//运行结果

在if-else结构中else可以与if语句连用构成嵌套判断 例题:输入一个数判断是0,还是正数,或者是负数
#include <stdio.h>
int main()
{
int nums;
scanf("%d", &nums);
if (nums == 0)
printf("0");
else if (nums > 0)
printf("%d是正数", nums);
else
printf("%d是负数",nums);
return 0;
}
// 相信到了这里你已经对if-else语句有了一个基本的理解让我们来完成一道练习
输入⼀个人的年龄 如果年龄<18岁,打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45岁⾄59岁打印"中⽼年" 如果年龄在60岁⾄89岁打印"⽼年" 如果90岁及以上打印"⽼寿星"
答案 :(不唯一此解法只是鄙人一看到此题的第一想法,如大家有更好的解法可以分享讨论)
#include <stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age >= 18 && age <= 44)
printf("青年\n");
else if (age >= 45 && age <= 59)
printf("中老年\n");
else if (age >= 60 && age <= 89)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
注意:在这里我们只需要记住一点: else只与最近的if匹配 在这里我们来看一个这样的问题
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("yes\n");
else
printf("no\n");
return 0;
}// 许多初入门的同学可能觉得这个代码运行输出no,但我们运行起来看一下

我们发现这个代码运行起来并没有我们想要的结果,这便是我们前面讲到的else总是与最近的if匹配
以下是修正后的代码可以更加直观帮助我们理解
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("yes\n");
else
printf("no\n");
}
return 0;
}这两段代码实际上是等价的,希望看完后能帮助刚才困惑的读者同学们理解,下面这段代码加上大括号后可读性更强,因此为了防止代码出现歧义,我们可以合理的使用大括号。
C语言中常见的关系操作符也称关系表达式一共有六个 • > ⼤于运算符 • >= ⼤于等于运算符 • <= ⼩于等于运算符 • == 相等运算符 • != 不相等运算符 注:1.关系表达式通常返回0或1表示真假 2.多个关系运算符不宜连用 3.C语言中等号为==而数学中的=在C中是赋值的意思
1.条件操作符也叫三目操作符语法形式如下:
expt1? exp2 : exp3例:(以下两段代码为一个意思方便理解)#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
scanf("%d", &a);
if (a > 5)
b = 1;
else
b = 3;
printf("%d", b);
return 0;
}
//改造后
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
scanf("%d", &a);
int c = a > 5 ? 1 : 3;
printf("%d", c);
return 0;
}注:在C语言中非0为真,0为假

&&的使用(同时为真才为真)

综合练习时间 例:判断一个数是否为闰年 参考:(笔者写法)
#include <stdio.h>
int main()
{
int year = 0;
scanf("%d", &year);
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
printf("%d是闰年\n", year);
else
printf("%d不是闰年\n",year);
}运行结果

!!! 注意点: 短路问题 对于 && 和 ||:只要前面一个为真后面是否为真不用判断
除了if语句还有switch可以来实现分支结构 7.1语法形式:
switch (expression) {
case value1: statement
case value2: statement
default: statementexpression: 必须是整形表达式 value:必须是整形常量表达式
例题:计算一个数模3之后的余数
#include <stdio.h>
int main()
{
int nums = 0;
scanf("%d", &nums);
switch (nums % 3)
{
case 0 :
printf("余数是:%d", nums % 3);
break;
case 1:
printf("余数是:%d", nums % 3);
break;
case 2:
printf("余数是:%d", nums % 3);
break;
}
}运行结果

注意: (1)case 和后面的数字之间有空格 (2)每一个case后面必须跟上break才能跳出switch语句 7.2 switch语句中的break和default 我们还是看上面那段代码
#include <stdio.h>
int main()
{
int nums = 0;
scanf("%d", &nums);
switch (nums % 3)
{
case 0 :
printf("余数是:%d\n", 0);
case 1:
printf("余数是:%d\n", 1);
break;
case 2:
printf("余数是:%d\n", 2);
break;
}
}执行结果

验证了每一个case后面必须跟上break才能跳出switch语句
最后让我们来看看default
#include <stdio.h>
int main()
{
int nums = 0;
scanf("%d", &nums);
switch (nums)
{
case 0 :
printf("%d\n", 0);
break;
case 1:
printf("%d\n", 1);
break;
case 2:
printf("%d\n", 2);
break;
default:
printf("%d\n", nums);
break;
}
}运行结果:

注:如果不满足case里面的情况就会进入default 注:default和case的顺序根据自己代码习惯就OK了
✨ 本文介绍了C语言中循环和分支结构的基础知识,主要包含以下内容: if-else语句的语法和使用方法,通过判断奇数的例题演示其应用; 嵌套if语句的使用,通过判断正负数的案例展示多条件判断; 悬空if问题的原因和解决方法,强调else与最近if匹配的原则; 关系操作符和条件操作符的语法规则及注意事项; 逻辑操作符(&&,||,!)的使用方法及短路特性; switch语句的语法结构,重点说明break和default的作用。