题解:洛谷 P5712 Apples

【题目来源】

洛谷:P5712 【深基3.例4】Apples - 洛谷

【题目描述】

八尾勇喜欢吃苹果。她今天吃掉了 \(x\) 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 \(1\) 个苹果,就输出 Today, I ate 1 apple.;如果她没有吃,那么就把 \(1\) 换成 \(0\);如果她吃了不止一个苹果,别忘了 apple 这个单词后面要加上代表复数的 s。你能帮她完成这个句子吗?

【输入】

输入一行一个自然数 \(x\),表示吃掉的苹果数。

【输出】

根据题目要求输出。

【输入样例】

1

【输出样例】

Today, I ate 1 apple.

【核心思想】

  1. 问题分析:给定吃掉的苹果数 \(x\),输出对应英文句子。语法规则:\(x \le 1\) 时用单数 apple\(x > 1\) 时用复数 apples

  2. 算法选择

    • 分支选择:根据 \(x\) 的值选择单数或复数形式输出
  3. 关键步骤

    • 读入数据cin >> x
    • 分支输出
      • x <= 1:输出 "Today, I ate %d apple."
      • 否则:输出 "Today, I ate %d apples."
    • printf 中的 %d 替换为 \(x\) 的值
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\),单次判断和输出
    • 空间复杂度:\(O(1)\),仅需一个整型变量
  5. 语法规则模拟的核心思想

    • 单复数边界:英语中 \(0\)\(1\) 用单数,\(\ge 2\) 用复数,因此判断边界为 x <= 1
    • 格式化输出printf%d 占位符动态插入数字,避免字符串拼接
    • 固定句式:句子结构固定,仅数字和单复数形式变化
    • 适用于语法规则模拟、条件输出、字符串格式化类入门问题

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    int x;                // 定义变量:吃掉的苹果数量

    cin >> x;            // 输入苹果数量

    // 根据苹果数量选择单复数输出
    if (x <= 1)
    {
        // 数量≤1时使用单数形式
        printf("Today, I ate %d apple.", x);
    }
    else
    {
        // 数量>1时使用复数形式
        printf("Today, I ate %d apples.", x);
    }

    return 0;            // 程序正常结束
}

【运行结果】

1
Today, I ate 1 apple.
posted @ 2026-08-05 15:47  团爸讲算法  阅读(11)  评论(0)    收藏  举报