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

C++实现美国首府猜谜作业代码运行错误排查求助

C++首府猜谜作业问题排查与修正方案

现有代码存在的问题

  • 初始化语法错误:{"Arizona", "Phoenix"} 后缺少逗号,会直接导致编译失败
  • 迭代器使用错误:map容器本身没有first/second成员,循环中应该使用迭代器it访问元素,即it->first(州名)、it->second(首府名)
  • 功能不符合要求:
    • 没有实现随机提问逻辑,当前是按固定顺序遍历所有州
    • 没有接收用户输入的逻辑,无法判断答题正误
    • 没有统计正确、错误次数的逻辑
  • 缺少随机功能依赖的头文件

修正后的完整代码

#include <iostream>
#include <map>
#include <string>
#include <cstdlib>
#include <ctime>
#include <iterator>
using namespace std;

int main()
{
    // 修正初始化逗号错误
    map<string, string> states = {
        {"Alabama", "Montgomery"}, {"Alaska", "Juneau"}, {"Arizona", "Phoenix"}, {"Arkansas","Little Rock"},
        {"California", "Sacramento"}, {"Colorado", "Denver"}, {"Connecticut", "Hartford"},
        {"Delaware", "Dover"}, {"Florida", "Tallahassee"}, {"Georgia", "Atlanta"}, {"Hawaii", "Honolulu"},
        {"Idaho", "Boise"}, {"Illinois", "Springfield"}, {"Indiana", "Indianapolis"},
        {"Iowa", "Des Moines"}, {"Kansas", "Topeka"}, {"Kentucky", "Frankfort"},
        {"Louisiana", "Baton Rouge"}, {"Maine", "Augusta"}, {"Maryland", "Annapolis"},
        {"Massachusetts", "Boston"}, {"Michigan", "Lansing"}, {"Minnesota", "Saint Paul"},
        {"Mississippi", "Jackson"}, {"Missouri", "Jefferson City"}, {"Montana", "Helena"},
        {"Nebraska", "Lincoln"}, {"Nevada", "Carson City"}, {"New Hampshire", "Concord"},
        {"New Jersey", "Trenton"}, {"New Mexico", "Santa Fe"}, {"New York", "Albany"},
        {"North Carolina", "Raleigh"}, {"North Dakota", "Bismarck"}, {"Ohio", "Columbus"},
        {"Oklahoma", "Oklahoma City"}, {"Oregon", "Salem"}, {"Pennsylvania", "Harrisburg"},
        {"Rhode Island", "Providence"}, {"South Carolina", "Columbia"}, {"South Dakota", "Pierre"},
        {"Tennessee", "Nashville"}, {"Texas", "Austin"}, {"Utah", "Salt Lake City"},
        {"Vermont", "Montpelier"}, {"Virginia", "Richmond"}, {"Washington", "Olympia"},
        {"West Virginia", "Charleston"}, {"Wisconsin", "Madison"}, {"Wyoming", "Cheyenne"}
    };

    // 初始化随机数种子
    srand((unsigned int)time(NULL));
    int correct = 0, wrong = 0;
    int questionCount = 5; // 可自行调整答题次数

    cout << "欢迎参加美国首府猜谜游戏,共" << questionCount << "道题,请输入对应首府名称:" << endl;

    for (int i = 0; i < questionCount; i++) {
        // 随机抽取一个州
        auto it = states.begin();
        int randomIndex = rand() % states.size();
        advance(it, randomIndex);

        string userInput;
        cout << "\n第" << i+1 << "题:What is the capital of " << it->first << "?" << endl;
        getline(cin, userInput); // 支持接收带空格的首府名称

        if (userInput == it->second) {
            cout << "回答正确!" << endl;
            correct++;
        } else {
            cout << "回答错误,正确答案是:" << it->second << endl;
            wrong++;
        }
    }

    // 输出最终统计结果
    cout << "\n答题结束,统计结果:" << endl;
    cout << "正确题数:" << correct << endl;
    cout << "错误题数:" << wrong << endl;
    cout << "正确率:" << (correct * 100.0 / questionCount) << "%" << endl;

    return 0;
}

可选优化点

  • 将用户输入和正确答案统一转为小写/大写后再对比,避免大小写敏感导致的误判
  • 增加题目去重逻辑,避免同一道题重复出现
  • 支持用户自定义答题数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:03