#P5703. 【深基2.例5】苹果采购

【深基2.例5】苹果采购

【深基2.例5】苹果采购

题目来源

洛谷 P5703

题目描述

现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?

输入格式

输入两个不超过 10910^9 正整数,分别表示每人分到的数量和同学的人数。

输出格式

一个整数,表示答案。保证输入和答案都在 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 的变量前有没有漏 &。