#P5703. 【深基2.例5】苹果采购
【深基2.例5】苹果采购
【深基2.例5】苹果采购
题目来源
洛谷 P5703
题目描述
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入格式
输入两个不超过 正整数,分别表示每人分到的数量和同学的人数。
输出格式
一个整数,表示答案。保证输入和答案都在 int 范围内的非负整数。
样例输入
5 3
样例输出
15
提示
一、scanf 是什么:从键盘读数据的函数
前面用 printf 往屏幕写,现在反过来:scanf 从输入里读数据,存进变量。
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
scanf("%d%d", &a, &b); // 读两个整数,按顺序存进 a、b
printf("%d\n", a + b); // 用它们算结果
return 0;
}
如果输入是 3 5,那 a 就是 3,b 就是 5。
二、& 是什么,为什么必须写
& 叫取地址符。scanf 要做的事是「把读到的值写进这个变量」,它必须知道变量在内存里的位置,所以传的是地址 &a,而不是值 a。
- 写
scanf("%d", &a);—— 正确,把值写到 a 的内存里。 - 写
scanf("%d", a);—— 编译能过,但运行时崩溃(RE)或读到乱值。
printf 只用变量的值,所以 printf("%d", a) 不加 &;scanf 要改变量,所以必须加。这个区别要刻在脑子里。
三、%d 在输入里的含义
和输出一样是「整数占位符」,但多一条规则:scanf 会自动跳过数字之间的空白(空格、换行、Tab 都算)。所以:
- 输入
3 5、3 5、3\n5,scanf("%d%d", &a, &b)都能正确读到。 - 连续两个
%d之间不要加空格或逗号,写了反而可能读错(后面「逗号分隔符」那题会专门讲)。
四、一次读多个变量
int a, b; 一行声明两个整数变量。scanf("%d%d", &a, &b) 按从左到右的顺序,把第一个数给 a、第二个数给 b。占位符个数必须和变量个数一致。
五、常见错误
-
忘了
&:scanf("%d", a)→ RE 或乱码。 -
格式串写成
"%d, %d"但输入里没有逗号 → 第二个数读不到。 -
变量没声明就用:
scanf("%d", &x)前要先int x;。 -
这是第一道「有输入」的题:程序要先把评测机给的两个数读进变量,再计算。
-
先声明两个 int 变量,再用
scanf一次读入;两个格式符之间不用写空格。 -
读完后就是纯算术:每人分到的数量 × 人数,用
printf打印。
自查:拿样例
5 3 → 15验一遍;如果输出是 0 或奇怪的数,先检查scanf的变量前有没有漏&。