第一章 C++语言入门¶
基础数学知识¶
- 三角形与梯形面积:三角形面积为 \(\frac{\text{底}\times\text{高}}{2}\),梯形面积为 \(\frac{(\text{上底}+\text{下底})\times\text{高}}{2}\);已知面积,也能反求高,对应 2061。
- 等量关系与作差:两种情况共有的原有量,可以通过相减消去,再求单位时间的增长量,对应 2063、1005。
- 小数乘除法:理解两个整数相除也可能得到小数,计算过程中要保留这部分结果,对应 1005。
1000:入门测试题目¶
提示 2:输出和,不是接着显示
cout << a << b;会显示35,怎样让程序先做加法?
把a + b放进输出语句,自己补好分号与程序模板。
常见错误
cin 后用 >>,cout 后用 <<。
提交时只输出答案,不加“请输入”等提示语。
自测
输入:3 5 → 预期输出:8
输入:0 7 → 预期输出:7
自己试试:把第二个数改成零,先写出预期结果。
再把两个数交换位置,结果会不会变?
参考代码
2060:【例1.1】计算机输出¶
提示 1:先核对要显示的文字
先看仔细啊,Hello World!的大小写、空格、感叹号,都要对上。
这题没有输入,不需要写cin。
常见错误
这里是 Hello World!,中间有空格,没有逗号。
别和后面的 1001 混淆,标点也要用英文。
自测
无需输入,预期输出:Hello World!。
方法一:cout 输出
方法二:printf 输出
2061:【例1.2】梯形面积¶
提示 1:先找图中同样高的部分
阴影三角形的底是15,面积是150。
先算高,面积乘2,再除以底。
算出来以后,回到图上看看,梯形的高是不是也找到了?
知识补充:先求高,再求面积
图中三角形的底为 15,面积为 150,所以高为 \(h=\frac{150\times2}{15}=20\)。
梯形两底为 15、25,面积为 \(S=\frac{(15+25)\times20}{2}\)。
printf("%.2lf", s) 控制结果保留两位小数。
常见错误
三角形和梯形的面积公式,都有“除以 2”。
输出 400.00,不能只显示 400。
自测
无需输入,预期输出:400.00。
参考代码
2062:【例1.3】电影票¶
提示 1:先算三个人的票价
一张10元,3个人要付多少元?
读入人数x后,总价用x * 10计算。
常见错误
两个数之间要有空格。
别把人数和总价直接接在一起,也不要另加“元”。
自测
输入:3 → 预期输出:3 30
输入:1 → 预期输出:1 10
参考代码
2063:【例1.4】牛吃牧草¶
提示 1:先把草换成容易数的份数
把一头牛一天吃的草看作1份。
15头牛吃20天,共吃300份;20头牛吃10天,共吃多少份?
提示 2:多出的草是多长出来的
两次开始时的草一样多,第一种吃法多持续10天,草也多长10天。
先用总份数作差,再除以相差的天数:
每天新长几份,就能长期供几头牛吃。
知识补充:两种吃法怎样作差
15 头牛吃 20 天,总共吃掉 \(15\times20=300\) 份草。
20 头牛吃 10 天,总共吃掉 \(20\times10=200\) 份草。
原有草量相同,多出的 100 份,是多生长 10 天的草。
所以每天新长 \(\frac{300-200}{20-10}=10\) 份,可供 10 头牛吃一天。
常见错误
题目问的是每天新长的草能供几头牛吃,不是还能吃几天。
这题没有输入,手算出固定答案后可以直接输出。
自测
无需输入,预期输出:10。
方法一:按数量关系计算
1001:Hello,World!¶
提示 1:和前面的输出题比标点
这次要显示Hello,World!,逗号后面没有空格。
自己写一行输出,和2060比一下,别把那题的文字直接搬过来啦。
常见错误
逗号后没有空格。
双引号只用来界定字符串,不会一起输出。
自测
无需输入,预期输出:Hello,World!。
1002:输出第二个整数¶
常见错误
cout << 2; 输出的是数字 2,不是第二个输入。
三个数都要按题意读入。
自测
输入:123 456 789 → 预期输出:456
输入:-1 0 1 → 预期输出:0
参考代码
1003:对齐输出¶
提示 1:把一行分成三个八格
拿草稿纸画三组八格,数放右边,组与组之间再空一格。
23占两格,左边要补六格;换成-23,负号也要占一格。
知识补充:字段宽度
%8d 默认右对齐,不够 8 个字符时,左边补空格。
格式串中的普通空格,则是字段之间的分隔符。
因此这题写 "%8d %8d %8d",不能只把三个 %8d 紧挨着。
常见错误
%8d 的 8 包括数字本身和负号,不是额外补 8 个空格。
超过 8 位的数完整输出,不截断。
自测
输入:123456789 0 -1 → 预期输出:123456789 0 -1
输入:1 23 456 → 预期输出: 1 23 456
前导空格是输出的一部分,复制时留意。
自己试试:选三个不同位数的整数,先在纸上画出每个字段占的位置。
再把其中一个换成负数,看看负号是否也占宽度。
参考代码
1004:字符三角形¶
提示 1:逐行数空格和字符
先用&画三行:每行前面几个空格,随后几个字符?
这时不用循环,分别写三条输出。
常见错误
cout << 'c'; 输出字母 c,cout << c; 才输出变量里的字符。
前导空格决定形状,不用 Tab 代替。
方法一:cout 输出字符
方法二:printf 格式化输出
1005:地球人口承载力估计¶
提示 1:先认清人数和年数
x亿人生活a年,消耗的资源记作x * a份。
y亿人生活b年,也算一次;两次开始时的资源相同。
提示 2:相减后,只剩相差那些年的新增资源
和前面牛吃草那题一样,先算两次总消耗差多少,再看相差几年。
z是每年新增资源能养活的人数,单位仍是亿人。
输入按x a y b读入,自己补保留两位小数的输出。
知识补充:把资源关系写出来
把一亿人生活一年的资源量看作 1 份。
设原有资源为 \(S\),每年新生资源为 \(g\),则:
两式相减,消掉 \(S\),得到:
能长期维持的人数,取决于每年的新生资源够多少人使用。
常见错误
输入顺序是 x、a、y、b,不是先读两个人数。
求差、做除法时保留括号,并在除法前转成浮点计算。
自测
输入:110 90 90 210 → 预期输出:75.00
输入:5 2 3 6 → 预期输出:2.00