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

C++数据套餐计费程序修复咨询:新手求助完整实现方案

搞定你的C++数据套餐计费程序!

嘿,刚入门编程别慌!我来帮你搭这个数据套餐计费的C++程序,一步步来你肯定能搞定~先给你一份完整的可运行代码,然后再拆解每部分的逻辑,这样你能直接跑起来,再慢慢理解~

#include <iostream>
#include <iomanip> // 用来格式化输出金额
using namespace std;

int main() {
    // 定义套餐相关常量,方便后续维护修改
    const double PACKAGE1_BASE = 39.99;
    const int PACKAGE1_MINS = 450;
    const double PACKAGE1_OVER = 0.45;

    const double PACKAGE2_BASE = 59.99;
    const int PACKAGE2_MINS = 900;
    const double PACKAGE2_OVER = 0.40;

    const double PACKAGE3_BASE = 69.99;

    // 声明需要用到的变量
    int accountNumber;
    char package;
    double totalMinutes;
    double totalCost = 0.0;

    // 显示清晰的套餐菜单
    cout << "=== 移动通话套餐菜单 ===" << endl;
    cout << "A) 套餐1: $39.99/月,包含450分钟通话,超出部分$0.45/分钟" << endl;
    cout << "B) 套餐2: $59.99/月,包含900分钟通话,超出部分$0.40/分钟" << endl;
    cout << "C) 套餐3: $69.99/月,不限通话时长" << endl;
    cout << endl;

    // 获取用户输入信息
    cout << "请输入您的账户编号: ";
    cin >> accountNumber;

    cout << "请选择您的套餐(A/B/C): ";
    cin >> package;
    // 统一转为大写,兼容用户输入小写的情况
    package = toupper(package);

    cout << "请输入当月总通话时长(分钟): ";
    cin >> totalMinutes;

    // 根据所选套餐计算总费用
    switch(package) {
        case 'A':
            totalCost = PACKAGE1_BASE;
            if (totalMinutes > PACKAGE1_MINS) {
                // 计算超出时长的额外费用
                totalCost += (totalMinutes - PACKAGE1_MINS) * PACKAGE1_OVER;
            }
            break;
        case 'B':
            totalCost = PACKAGE2_BASE;
            if (totalMinutes > PACKAGE2_MINS) {
                totalCost += (totalMinutes - PACKAGE2_MINS) * PACKAGE2_OVER;
            }
            break;
        case 'C':
            totalCost = PACKAGE3_BASE;
            break;
        default:
            cout << "错误:您选择的套餐不存在,请重新运行程序选择正确套餐!" << endl;
            return 1; // 退出程序,返回错误状态码
    }

    // 格式化输出账单,金额保留两位小数
    cout << fixed << setprecision(2);
    cout << endl << "=== 账户账单详情 ===" << endl;
    cout << "账户编号: " << accountNumber << endl;
    cout << "所选套餐: " << package << endl;
    cout << "总通话时长: " << totalMinutes << " 分钟" << endl;
    cout << "当月总费用: $" << totalCost << endl;

    return 0;
}

关键代码部分拆解

  • 常量定义:把每个套餐的基础费用、包含时长、超出费率都用const关键字定义,后续如果套餐价格调整,直接修改常量值即可,不用在代码里到处查找修改,更易维护。
  • 输入容错处理:用toupper()函数把用户输入的套餐字母转为大写,这样不管用户输入a还是A,程序都能正确识别,提升了程序的用户友好性。
  • 费用计算逻辑:用switch语句分情况处理不同套餐,逻辑清晰直观:先设置套餐基础费用,再判断通话时长是否超出套餐包含时长,超出则叠加额外费用;套餐3因为不限时长,直接取基础费用即可。
  • 格式化输出:通过fixed和setprecision(2)让金额以两位小数的形式展示,符合日常货币的显示习惯,看起来更专业。

你可以把这段代码复制到C编译器(比如Dev-C、Code::Blocks或者在线编译器)里运行,测试不同的输入场景:比如套餐A用了500分钟,套餐B用了1000分钟,套餐C随便输入时长,看看计算结果是否符合预期。

如果后续想完善程序,还可以加入输入验证(比如防止用户输入非数字的账户编号或通话时长),或者增加对比其他套餐费用的功能,不过先把核心功能跑通,再逐步优化就好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:34:10