饭不食,水不饮,题必须刷
C语言免费动漫教程,和我一起打卡! 《光天化日学C语言》
LeetCode 太难?先看简单题! 《C语言入门100例》
数据结构难?不存在的! 《画解数据结构》
LeetCode 太简单?算法学起来! 《夜深人静写算法》
本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
这一章的主要内容是 条件判定语句,即 if else 语句。
a = 6
是一个赋值表达式,而a = 6;
则代表一个赋值语句。#include
int main() {
int a = 1; // (1)
int b = ++a; // (2)
int c = a + b; // (3)
printf("%d\n", a, b, c); // (4)
return 0; // (5)
}
{
和}
括起来,就构成了一个复合语句。复合语句的作用和单个简单语句分开写是一致的,有时候也叫程序块。并且,花括号的后面不需要跟分号。#include
int main() {
{
int a = 1; // (1)
int b = ++a; // (2)
int c = a + b; // (3)
printf("%d\n", a, b, c); // (4)
}
return 0; // (5)
}
if (表达式)
语句1
else
语句2
这个语句在执行时,先计算 表达式 的值:
1)如果 表达式 的值 非零,则执行 语句1;
2)如果 表达式 的值 为零,则执行 语句2;
#include
int main() {
int n;
scanf("%d", &n);
if(n % 2 == 1)
printf("%d 是奇数!", n);
else
printf("%d 是偶数!", n);
return 0;
}
n % 2 == 1
是由算术运算符%
和关系运算符==
组成的表达式,它的含义是 n n n 模 2 的值是否为 1。如果为 1 即表达式成立,则输出 n n n 是奇数,否则输出 n n n 是偶数。#include
int main() {
int n;
scanf("%d", &n);
if(n % 2 == 1)
{
n *= 3;
n -= 4;
}
else
{
n -= 5;
n *= 6;
}
return 0;
}
{
放在条件判断的后面,并且将 else
放在右花括号}
的后面。因为 C语言 对空格和换行不是很敏感,得到代码如下:#include
int main() {
int n;
scanf("%d", &n);
if(n % 2 == 1) {
n *= 3;
n -= 4;
} else {
n -= 5;
n *= 6;
}
return 0;
}
if (表达式)
语句1
else
语句2
if (表达式 != 0)
语句1
else
语句2
#include
int main() {
int n;
scanf("%d", &n);
if(n % 2) {
// (1)
n *= 3;
n -= 4;
} else {
n -= 5;
n *= 6;
}
return 0;
}
n % 2 == 1
等价于n % 2 != 0
,等价于n % 2
。 if (表达式)
语句
#include
int main() {
int n;
scanf("%d", &n);
if(n % 2) {
printf("%d\n", n);
}
return 0;
}
if (表达式1)
语句1
else if(表达式2)
语句2
else if(表达式3)
语句3
else if(...)
...
else
语句n
else if
后的表达式 和 语句 都不会进行计算了。else
表示的则是 “上述条件均不成立” 的情况,当然,如果不需要处理这种情况,也是可以省略的。【例题1】通过输入字符,判断它的类型:
1)如果是数字,输出串 “number”;
2)如果是大写字母,输出串 “upper letter”;
3)如果是小写字母,输出串 “lowwer letter”;
#include
int main(){
char c;
c = getchar();
if(c >= '0' && c <= '9')
printf("number\n");
else if(c >= 'A' && c <= 'Z')
printf("upper letter\n");
else if(c >= 'a' && c <= 'z')
printf("lowwer letter\n");
else
printf("other\n");
return 0;
}
if (表达式1) {
if(表达式2)
语句1
} else
语句n
if
,但是只有一个else
时,这个else
到底是和哪个if
匹配的,我们通过一个例子来说明。代码如下:#include
int main() {
int a = 1, b = 2;
if(a) // (1)
if(a > b) // (2)
printf("a > b\n");
else // (3)
printf("a == 0\n");
return 0;
}
a == 0
#include
int main() {
int a = 1, b = 2;
if(a) // (1)
if(a > b) // (2)
printf("a > b\n");
else // (3)
printf("a == 0\n");
return 0;
}
else
,是匹配的 ( 2 ) (2) (2)的if
,不是匹配 ( 1 ) (1) (1)的if
;else
与最近的前一个没有与else
匹配的if
匹配。所以怕产生歧义的最好办法,就是多加{}
。通过这一章,我们学会了:
1)if else 语句的用法;
2)else if 语句的用法;
饭不食,水不饮,题必须刷
C语言免费动漫教程,和我一起打卡! 《光天化日学C语言》
LeetCode 太难?先看简单题! 《C语言入门100例》
数据结构难?不存在的! 《画解数据结构》
LeetCode 太简单?算法学起来! 《夜深人静写算法》