2401_87283934 2024-09-29 14:07 采纳率: 80%
浏览 4

C++编程问题:这几个问题怎么解决啊

新问题新困惑,学校总是给我们布置超出能力的问题,完全没有思路啊

img

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-29 14:09
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在解答这些题目时,我们可以采用不同的策略来处理每个部分。下面我将分别针对每个问题提供详细的解决方案。

    图1 - 字符串计数

    题目描述

    • 输入一个字符串,并计算其中数字字符的数量。

    解决方案

    1. 遍历字符串中的每一个字符。
    2. 检查当前字符是否为数字(即isdigit()返回true)。
    3. 如果是数字,则计数器加1。
    4. 最后返回计数器的值作为结果。

    示例代码:

    #include <iostream>
    #include <string>
    
    int countDigits(const std::string& str) {
        int count = 0;
        for (char c : str) {
            if (isdigit(c)) {
                ++count;
            }
        }
        return count;
    }
    
    int main() {
        std::string input;
        std::cout << "请输入一个包含数字字符的字符串: ";
        std::getline(std::cin, input);
        
        int digitCount = countDigits(input);
        std::cout << "数字字符的个数: " << digitCount << std::endl;
    
        return 0;
    }
    

    图2 - 判断星期几

    题目描述

    • 输入星期几的字母,根据字母来判断对应的日期。

    解决方案

    1. 创建一个字典,用于存储每个星期的字母对应星期的键值对。
    2. 根据用户输入的字母从字典中查找相应的星期。
    3. 输出找到的星期。

    示例代码:

    #include <iostream>
    #include <map>
    #include <string>
    #include <sstream>
    #include <vector>
    using namespace std;
    
    bool isWeekday(string dayOfWeek) {
        map<string, string> weekdays = {
            {"Monday", "Mon"}, {"Tuesday", "Tue"},
            {"Wednesday", "Wed"}, {"Thursday", "Thu"},
            {"Friday", "Fri"}, {"Saturday", "Sat"},
            {"Sunday", "Sun"} // 周日的英文名称
        };
        return weekdays.find(dayOfWeek) != weekdays.end();
    }
    
    void printWeekday() {
        cout << "请输入星期几的第一个字母: ";
        string weekDay;
        getline(cin, weekDay);
    
        if (!isWeekday(weekDay)) {
            cout << "输入错误,请输入正确的星期几字母。" << endl;
            return;
        }
    
        cout << "请输入下一个字母: ";
        string nextLetter;
        cin >> nextLetter;
    
        if (!nextLetter.compare("u")) {
            cout << "您想要输入的是星期二: Tuesday" << endl;
        } else if (!nextLetter.compare("t")) {
            cout << "您想要输入的是星期五: Friday" << endl;
        } else {
            cout << "输入不正确,请重新输入。" << endl;
        }
    }
    
    int main() {
        while (true) {
            printWeekday();
        }
    }
    

    图3 - 啤酒兑换

    题目描述

    • 计算购买一定数量的啤酒所需的金额,以及最多能喝到多少瓶啤酒。

    解决方案

    1. 定义两个变量 totalBottlesmoney 来记录总共能喝到的啤酒瓶数和已经花费的金额。
    2. 对于每次消费,先获取啤酒的价格,然后通过价格乘以消费次数来计算总的费用。
    3. 将总费用与已经花费的金额进行比较,如果总费用大于或等于剩余金额,就继续饮用啤酒,否则停止。

    示例代码:

    #include <iostream>
    #include <limits>
    using namespace std;
    
    double calculateBeer(int bottlesToDrink, double money) {
        double totalBottles = 0;
        double remainingMoney = money;
        double pricePerBottle = 2; // 市场上的啤酒价格,单位为元
    
        while (bottlesToDrink > 0 && remainingMoney >= pricePerBottle) {
            totalBottles++;
            remainingMoney -= pricePerBottle;
            bottlesToDrink--;
        }
    
        return totalBottles;
    }
    
    int main() {
        int bottlesToDrink;
        double money;
        cout << "请输入您要购买的啤酒数量: ";
        cin >> bottlesToDrink;
        cout << "请输入您可用的钱: ";
        cin >> money;
    
        double beerAmount = calculateBeer(bottlesToDrink, money);
        cout << "您最终能喝到 " << beerAmount << " 瓶啤酒" << endl;
    
        return 0;
    }
    

    以上就是对于三个不同场景的解析和解决方案。希望这些建议能够帮助你在面对超出能力的编程问题时找到合适的应对策略。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日

悬赏问题

  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?
  • ¥15 nasm x86 变量归零
  • ¥65 Tree 树形控件实现单选功能,可以使用element也可以手写一个,实现全选为全选状态
  • ¥60 寻抓云闪付tn组成网页付款链接
  • ¥16 寻字节跳动内部人员帮推简历
  • ¥20 如何通过sentry收集上传Android ndk的崩溃?