You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++作业编程求助:销售条形图程序后半部分卡壳

C++作业:门店销售额条形图实现

题目要求

编写一个程序,要求用户输入5家门店当日的销售额,然后显示一个对比各门店销售额的条形图。条形图的每个条形由一行星号组成,每个星号代表100美元的销售额。

示例输出

请输入门店1今日销售额:1000(回车)

请输入门店2今日销售额:1200(回车)

请输入门店3今日销售额:1800(回车)

请输入门店4今日销售额:800(回车)

请输入门店5今日销售额:1900(回车)

销售额条形图

(每个*代表100美元)

门店1:**********
门店2:************
门店3:******************
门店4:********
门店5:*******************

当前代码

#include <iostream> 
using namespace std;

int main()
{
    int stores;
    int i = 1;//counter variables
    int sale;
    int j = 1;//counter variables

    // Get input from the user to see how many stores you are listing
    cout << "Please enter how many stores you are inputting data for.
";
    cin >> stores;
    
    
    while(j<= stores)
    {
        cout << "Enter today's sale for store "<< i << ": "; 
        cin >> sale;
        j++;
        i++;
    }
    
    cout << "SALES BAR CHART:" << endl;
    cout << "Each * = $100" << endl;
}

问题分析与修复代码

当前代码的核心问题是没有存储每个门店的销售额,仅用单个sale变量会导致每次输入覆盖之前的数据,无法后续生成条形图。我们可以用数组来存储所有门店的销售额,再通过循环生成对应数量的星号,完全符合仅使用循环和if/else的要求。

固定5家门店的修复代码

#include <iostream> 
using namespace std;

int main()
{
    const int STORE_COUNT = 5; // 题目要求固定5家门店
    int sales[STORE_COUNT]; // 存储每家门店的销售额

    // 输入每家门店的销售额
    for (int i = 0; i < STORE_COUNT; i++)
    {
        cout << "请输入门店" << (i + 1) << "今日销售额:";
        cin >> sales[i];
    }

    // 输出条形图标题
    cout << "\n销售额条形图" << endl;
    cout << "(每个*代表100美元)" << endl;

    // 生成每个门店的条形
    for (int i = 0; i < STORE_COUNT; i++)
    {
        cout << "门店" << (i + 1) << ":";
        // 计算需要的星号数量:销售额除以100,取整数部分
        int starCount = sales[i] / 100;
        // 循环输出对应数量的星号
        for (int j = 0; j < starCount; j++)
        {
            cout << "*";
        }
        cout << endl;
    }

    return 0;
}

支持自定义门店数量的修复代码

如果保留原代码中“让用户输入门店数量”的逻辑,可调整为:

#include <iostream> 
using namespace std;

int main()
{
    int storeCount;
    cout << "请输入要统计的门店数量:";
    cin >> storeCount;

    int sales[100]; // 最多支持100家门店,可按需调整

    // 输入销售额
    for (int i = 0; i < storeCount; i++)
    {
        cout << "请输入门店" << (i + 1) << "今日销售额:";
        cin >> sales[i];
    }

    // 输出条形图
    cout << "\n销售额条形图" << endl;
    cout << "(每个*代表100美元)" << endl;

    for (int i = 0; i < storeCount; i++)
    {
        cout << "门店" << (i + 1) << ":";
        int starCount = sales[i] / 100;
        // 处理负数销售额的情况,确保星号数量不为负
        if (starCount < 0) starCount = 0;
        for (int j = 0; j < starCount; j++)
        {
            cout << "*";
        }
        cout << endl;
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者Chaofficia1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:00:47