文章目录
- 零、写在前面
- 一、【例题1】
-
- 二、【例题2】
-
- 三、【例题3】
-
- 四、【例题4】
-
- 五、【例题5】
-
- 五、推荐专栏
- 六、习题练习
零、写在前面
目前本专栏正在进行优惠活动,在博主主页添加博主好友(好友位没有满的话),可以获取 付费专栏优惠券。
从本节开始,我们就要开始学习 「 C语言 」 了,学习方式很简单,每天我会提供一篇文章供群成员阅读,阅读完本文,做完课后的 「习题练习 」 ,在 万人千题 社区对应的 「打卡帖 」 下打卡,今天的任务就算完成了。
因为大家都在学习,所以一旦遇到问题都可以在群里问,群成员能够做出更加快速的反馈,高效的达成学习的目的。学有余力的同学可以在 万人千题 社区发布每天练习的解题报告。
我的学习策略很简单 —— 题海策略。当然,这 100 讲如果都能够自己认认真真把代码写出来,那入门肯定是没问题了,至于后面的进阶就要看 「 个人的天赋 」 以及 「 后天的努力 」 了。
本文将介绍这套试题的最基础的四种输入方式,题目都是围绕
a
+
b
a + b
a+b 进行展开。是适合C语言初学者做的 第一套题,解题过程我会写的非常详细。如果理解不了,可以在群里或者社区,询问咨询!
这个系列的题目都会以三部分进行呈现,分别是【题目描述】【解题思路】【代码详解】。
![](https://img-blog.csdnimg.cn/20210602192932154.gif#pic_center)
虽然这是你的第一道C语言题,但是你可能会遇到这么多知识点 ,千万不要被劝退哦~~
![](https://img-blog.csdnimg.cn/20210628212729618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1doZXJlSXNIZXJvRnJvbQ==,size_1,color_FFFFFF,t_70#pic_center)
一、【例题1】
1、题目描述
【例题1】输入两个正整数
a
a
a 和
b
b
b,输出
a
+
b
a + b
a+b 的值。 其中
a
,
b
≤
10000
a, b \le 10000
a,b≤10000。
2、解题思路
难度:🔴⚪⚪⚪⚪
3、代码详解
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
return 0;
}
-
(
1
)
(1)
(1)
#include
是包含头文件的语法,stdio.h
是输入输出相关的头文件,所有的 scanf
和输出函数printf
都必须包含这个头文件; -
(
2
)
(2)
(2)
main
函数是所有程序执行的入口,程序会检测到这个入口函数,然后开始往下执行; -
(
3
)
(3)
(3) 声明两个变量
a
和b
; -
(
4
)
(4)
(4) 通过控制台输入两个数字,并且赋值给
a
和b
; -
(
5
)
(5)
(5) 将
a+b
的结果输出到终端(屏幕)上; -
(
6
)
(6)
(6)
return 0;
是main
函数的返回值语句,返回以后程序就结束了;
![](https://img-blog.csdnimg.cn/20210704054723403.gif#pic_center)
二、【例题2】
1、题目描述
【例题2】先输入一个
t
(
t
≤
100
)
t (t \le 100)
t(t≤100),然后输入
t
t
t 组数据。对于每组数据,输入两个整数
a
a
a 和
b
b
b,输出
a
+
b
a + b
a+b 的值。其中
a
,
b
≤
10000
a, b \le 10000
a,b≤10000。
2、解题思路
难度:🔴⚪⚪⚪⚪
- 除了最简单的标准输入和标准输出。还考察了循环语句的使用。
3、代码详解
#include <stdio.h>
int main() {
int a, b, t;
scanf("%d", &t);
while (t--) {
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
}
return 0;
}
- 和【例题1】的区别在于,这里引入了多组数据的概念。要求先输入一个数
t
t
t,然后循环
t
t
t 次输入
a
a
a 和
b
b
b 的值。
-
(
1
)
(1)
(1) 输入
t
t
t;
-
(
2
)
(2)
(2)
while(expr){ body }
是一个循环语句的结构,其中expr
表示的是表达式,而body
则代表循环的内容。这里expr
就是t--
了,我们可以这么理解,当
t
=
0
t=0
t=0 时,这个表达式的值为 0,所以整个循环就会结束,循环体 body
的执行次数就是我们输入的那个
t
t
t。然后我们把循环体套用【例题1】就能满足我们的题意要求了。 - 如果没有输入数据组数,我们能否知道何时输入结束呢?
- 那么,让我们来看下一个例题吧。
三、【例题3】
1、题目描述
【例题3】循环输入,每输入两个正整数
a
a
a 和
b
b
b(其中
a
,
b
≤
10000
a, b \le 10000
a,b≤10000),就输出
a
+
b
a + b
a+b 的值。 当没有任何输入时,结束程序。
2、解题思路
难度:🔴⚪⚪⚪⚪
- 这个问题对于新人的困扰在于:我们如何才能知道当前已经没有任何输入了,这就需要用到输入函数的返回值。
- 我们知道输入函数为
scanf
,当这个函数返回EOF
时,就代表没有任何输入了。所以我们可以循环判断函数的返回值是否等于 EOF
。 - 其中
EOF
是一个宏,可以认为它的值就是整数 -1
。 - 它的定义如下:
#define EOF -1
3、代码详解
#include <stdio.h>
int main() {
int a, b;
while(scanf("%d %d", &a, &b) != EOF) {
printf("%d\n", a + b);
}
return 0;
}
- 这里,我们先考虑
scanf("%d %d", &a, &b)
这个函数的返回值,当你从控制台输入两个数时,它会根据输入的格式正确与否,返回输入成功的数的个数,所以正常情况是返回 2 。 - 当没有任何输入时,它会返回
EOF
,所以导致循环语句内的条件变成假,从而退出循环,退出循环以后就顺理成章的结束进程了,符合题意要求。
四、【例题4】
1、题目描述
【例题4】循环输入,每输入两个正整数
a
a
a 和
b
b
b(其中
a
,
b
≤
10000
a, b \le 10000
a,b≤10000),就输出
a
+
b
a + b
a+b 的值。 当输入的
a
a
a 和
b
b
b 都等于零时,程序结束。
![](https://img-blog.csdnimg.cn/20210704054754801.gif#pic_center)
2、解题思路
难度:🔴⚪⚪⚪⚪
- 和【例题3】的区别在于:输入结束条件变成了 "
a
a
a 和
b
b
b 同时为零"。
3、代码详解
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
if(a == 0 && b == 0)
break;
printf("%d\n", a + b);
}
return 0;
}
-
(
1
)
(1)
(1) 由于结束条件很明确,所以我们只需要在 【例题3】 的循环体内,加上满足退出循环条件的判断即可, "
a
a
a 和
b
b
b 同时为零" 的 代码表示为
a==0 && b==0
,然后套上 if
语句和break;
语句就能够实现这个功能了。 - 这里,介绍另外一种更加简便的写法。
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) && (a || b) ) {
printf("%d\n", a + b);
}
return 0;
}
-
(
1
)
(1)
(1) 因为题目确保当 "
a
a
a 和
b
b
b 同时为零" 时程序结束,所以不满足 "
a
a
a 和
b
b
b 同时为零" 这个条件的时候,应该一直能够输入,也就是
!(a==0 && b==0)
; - 化简后得到
(a != 0 || b != 0)
,又表达式expr != 0
和expr
是等价的,所以这个条件又可以表示成(a||b)
,也就有了这种写法。
五、【例题5】
1、题目描述
【例题5】要求实现一个函数add
,传入参数为
a
a
a 和
b
b
b,返回两者之和。
2、解题思路
难度:🔴⚪⚪⚪⚪
这是 LeetCode OJ,经常需要用到的格式,如果不理解函数的概念,可以暂时认为它就是初中数学中,我们学过的那个概念,传入的参数是 自变量 (只不过可能有多个),返回的参数是 应变量。
3、代码详解
int add(int a, int b) {
return a + b;
}
五、推荐专栏
🌌《LeetCode零基础指南》🌌
(第二讲) 函数
六、习题练习
👇🏻 关注公众号 观看 精彩学习视频👇🏻
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)