目录
前言
C语言是一个结构化的程序设计语言,其中的“结构化”指的是C语言语句有三种结构,分别是:顺序结构、分支结构和循环结构,本节就来讲讲分支和循环结构。
分支语句
1. if语句
1.1 if
C语言中,if 语句的语法形式为:
if(表达式)
语句;
它的运行逻辑是:
表达式的值若为真,就执行 if 下面的语句;若为假,就不执行语句。
那么 ‘真’ 和 ‘假’ 指的是什么呢?其实,C语言中,只要不是0就为真,那么相反,0就为假。
例如:输入一个整数,判断是否为奇数:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
if(num % 2 == 1)
printf("%d是奇数\n",num);
return 0;
}
在上面的例子中,表达式 “num % 2 == 1” 的值如果为真,那么就打印;如果为假则不打印。
下面是运行结果:
1.2 if...else...
如果 if 表示一种情况,那么 else 就是与之相反的另一种情况。
比如上面的例子,一个数要么是奇数要么是偶数(这里咱不谈 0 哈)。所以,如果16不是奇数,那它就是偶数。
那偶数要怎么打印出来呢?就要用到 else :
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
if(num % 2 == 1)
printf("%d是奇数\n",num);
else
printf("%d是偶数\n",num);
return 0;
}
运行以上代码结果如下:
这样的语句就是 if...else... 语句,其语法形式是:
if(表达式)
语句1;
else
语句2;
它的运行逻辑就是:
表达式的值若为真,就执行 if 下面的语句1;若为假,就执行 else 下面的语句2。
来个小练习:交警叔叔在城市道路查超速,输入一个数代表车速,若车速大于等于60km/h,则视为超速;否则视为不超速。
#include<stdio.h>
int main()
{
int speed = 0;
scanf("%d", &speed);
if (speed >= 60)
printf("已超速!\n");
else
printf("未超速\n");
return 0;
}
执行以上代码的结果如下:
现在你应该能够写出来这样的代码了吧?那如果交警叔叔想要给警告,该怎么写呢?
#include<stdio.h>
int main()
{
int speed = 0;
scanf("%d", &speed);
if (speed >= 60)
printf("已超速!\n");
printf("十分危险\n");
else
printf("未超速\n");
printf("很安全哦");
return 0;
}
如果此时运行你会发现编译器会报错
VS的报错信息是这样的:
Dev-C++的报错信息是这样的:
它们都在提示你:没有和 else 相匹配的 if 语句。
其实,C语言 if 和 else 语句都只能执行他们下方的一条语句,超过一条就管不了了。
PS:如果你用的是VS的话,当你写完的时候VS的缩进就已经在提示你了:
为了解决这个问题,我们可以使用大括号 { } 把语句全部括起来。
实际上,使用大括号 { } 控制的多条语句称为 “程序块” 或者 “复合语句”
#include<stdio.h>
int main()
{
int speed = 0;
scanf("%d", &speed);
if (speed >= 60)
{
printf("已超速!\n");
printf("十分危险\n");
}
else
{
printf("未超速\n");
printf("很安全哦\n");
}
return 0;
}
使用大括号 { } 控制多条语句不仅美观整洁,还能够养成良好的代码习惯~
以下是执行结果:
1.3 嵌套 if...else...
先来个小练习~
#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;
}
我们可以看到,判断的条件增加到了三个:0、正数、负数。
但是使用 if...else... 只能判断两个条件,因此诞生了 if...else... 语句的嵌套。
与之前写的代码相比,这次代码明显多了 else if ( ) 这个东西,这个实际上可以拆开来看:
else 和前面的 if 组成 if...else... ;而 if 和后面的 else 组成 if...else... ,由此构成了 if...else... 的嵌套语句。
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num > 0)
{
if (num % 2 == 0)
{
printf("%d是偶数\n", num);
}
else
{
printf("%d是奇数\n", num);
}
}
else
{
printf("非奇数\n");
}
return 0;
}
这是在一个 if 语句中嵌套 if...else... ,可以满足更加复杂的条件判断。
练习:
要求编写程序将一个百分制成绩转换为五分制成绩,
转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
参考代码:
#include <stdio.h>
int main()
{
int score = 0;
scanf("%d",&score);
if(score < 60)
{
printf("E\n");
}
else if(score < 70)
{
printf("D\n");
}
else if(score < 80)
{
printf("C\n");
}
else if(score < 90)
{
printf("B\n");
}
else
{
printf("A\n");
}
return 0;
}
结语
剩下的讲不完啦,下次再说~