c++输入关键数字获得对应的打印文字并且循环不断直到自己退出

我想做一个 公司要求的 输入一段数字 然后获得数字对应的问题 一直循环下去 输入几个关键数字就出现那个关键数字对应的文字 想问一下各位我该怎么做呢 最好是有模板谢谢了

好的,下面是一个模板供您参考:

#include <iostream>
#include <string>
#include <map>
using namespace std;

int main() {
    // 初始化关键数字和对应文字的映射表
    map<int, string> keyWords = {
        {1, "这是问题1的答案。"},
        {2, "这是问题2的答案。"},
        {3, "这是问题3的答案。"}
    };

    int input;
    while (true) {
        // 提示用户输入关键数字
        cout << "请输入关键数字(输入0退出程序):";
        cin >> input;

        // 判断用户输入是否为0,如果是则退出循环
        if (input == 0) {
            break;
        }

        // 查找关键数字对应的文字并输出
        if (keyWords.find(input) != keyWords.end()) {
            cout << keyWords[input] << endl;
        } else {
            cout << "没有找到对应的问题,请重新输入。" << endl;
        }
    }

    return 0;
}

解释:

  1. 首先使用 map 定义了一个关键数字和对应文字的映射表 keyWords,其中 1 对应 "这是问题1的答案。"2 对应 "这是问题2的答案。"3 对应 "这是问题3的答案。"
  2. 进入循环,提示用户输入关键数字,然后读取用户输入到变量 input 中。
  3. 判断 input 是否为 0,如果是则退出循环。
  4. keyWords 中查找 input 对应的文字,如果找到则输出,如果没有找到则输出提示信息。
  5. 重新回到循环开始,等待下一个用户输入。

以下是一个C++程序,它从用户那里接收一个数字,并打印与该数字对应的文本。程序会一直循环,直到用户选择退出:

Copy code
#include <iostream>
using namespace std;

int main() {
    int num;
    while (true) {
        cout << "请输入数字(输入0退出程序):" << endl;
        cin >> num;

        switch (num) {
            case 1:
                cout << "打印文本1" << endl;
                break;
            case 2:
                cout << "打印文本2" << endl;
                break;
            case 3:
                cout << "打印文本3" << endl;
                break;
            case 4:
                cout << "打印文本4" << endl;
                break;
            case 5:
                cout << "打印文本5" << endl;
                break;
            case 6:
                cout << "打印文本6" << endl;
                break;
            case 7:
                cout << "打印文本7" << endl;
                break;
            case 8:
                cout << "打印文本8" << endl;
                break;
            case 9:
                cout << "打印文本9" << endl;
                break;
            case 0:
                cout << "程序已退出" << endl;
                return 0;
            default:
                cout << "输入的数字无效,请重新输入" << endl;
                break;
        }
    }

    return 0;
}

注意,这个程序假设输入的数字介于0和9之间(包括0和9)。如果需要处理更多的数字,可以添加更多的case语句。

你这不就是要查字典么?先得创建字典,再输入key搜索。一段数字是个整型的话,定义一个map就行

该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以使用C++的 switch 语句和 while 循环来实现这个功能。以下是一个简单的示例代码,它可以接受用户输入关键数字,并打印相应的文本,直到用户输入“exit”为止:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int input;
    string text;

    while (true) {
        cout << "请输入关键数字(输入0退出):";
        cin >> input;

        switch (input) {
            case 1:
                text = "问题1的答案。";
                break;
            case 2:
                text = "问题2的答案。";
                break;
            case 3:
                text = "问题3的答案。";
                break;
            case 4:
                text = "问题4的答案。";
                break;
            case 5:
                text = "问题5的答案。";
                break;
            case 0:
                cout << "退出程序。\n";
                return 0;
            default:
                text = "无效的输入,请重新输入。";
                break;
        }

        cout << text << endl;
    }

    return 0;
}


在上面的代码中,我们首先定义了变量 input 用于存储用户输入的数字,变量 text 用于存储关键数字对应的文本。接下来,我们使用一个无限循环来接受用户的输入,直到用户输入了 0,表示要退出程序。
·
在每次循环中,我们使用 switch 语句来根据用户输入的数字选择相应的文本。如果用户输入的数字没有匹配到任何一个 case,我们会将 text 设置为一个默认的无效输入提示。
·
最后,我们将 text 打印到屏幕上,并开始下一轮循环。

我画...的部分你可以自己修改,望采纳(这是模板,需按照自己需求改)


#include <iostream>
using namespace std;
 
int main() {
    int num;
    while (true) {
        cout << "请输入数字(输入0退出程序):" << endl;
        cin >> num;
 
        switch (num) {
            case 1:
                cout <<...;
                break;
            case 2:
                cout << ...;
                break;
            case 3:
                cout << ...;
                break;
            case 4:
                cout << ...;
                break;
            case 5:
                cout << ...;
                break;
            case 6:
                cout << ...;
                break;
            case 7:
                cout << ...;
                break;
            case 8:
                cout << ...;
                break;
            case 9:
                cout << ...;
                break;
                
            ...
            ...    
            ...    
                
            case n:
                cout << ...;
                break;   
            case 0:
                cout << "退出";
                return 0;
            default:
                cout << "输入有误,请重新输入" << endl;
                break;
        }
    }
 
    return 0;
}

参考GPT和自己的思路:以下是一个基本的 C++ 程序,该程序会循环读取用户输入的数字,根据输入的数字输出相应的问题,直到用户输入特定的关键数字以退出程序。你可以根据需求进行修改:

#include <iostream>
#include <string>
#include <unordered_map>

using namespace std;

struct Problem {
    string question;
    string answer;
};

int main() {
    // 读取大型数据库并存储到哈希表中
    unordered_map<int, Problem> db = {
        {1, {"问题1", "答案1"}},
        {2, {"问题2", "答案2"}},
        {3, {"问题3", "答案3"}},
        // ...
    };

    // 遍历哈希表并输出问题和答案
    for (const auto& entry : db) {
        cout << entry.second.question << endl;
        cout << entry.second.answer << endl;
    }

    return 0;
}


在这个程序中,我们使用一个循环遍历哈希表中的所有问题,并输出问题和答案。在循环结束后,程序就会直接退出。请注意,这种做法不需要等待用户输入,而是直接按照数据顺序输出问题和答案。如果您需要按照特定顺序输出问题和答案,可以在哈希表中存储一个排序字段,并在循环中按照该字段排序后输出。

以下是一个示例程序,可以实现您所需的功能。它使用一个无限循环,每次从标准输入读取一个数字,然后打印对应的问题。如果用户输入特定的退出命令,程序将退出循环并结束。

#include <iostream>
#include <map>
#include <string>

int main() {
  std::map<int, std::string> question_map = {
      {1, "What is your name?"},
      {2, "Where are you from?"},
      {3, "What is your favorite color?"},
      {4, "What do you like to do for fun?"},
  };

  std::string exit_command = "exit";
  std::string input;
  int key;

  while (true) {
    std::cout << "Please enter a key number or type 'exit' to quit: ";
    std::cin >> input;

    if (input == exit_command) {
      break;
    }

    try {
      key = std::stoi(input);

      if (question_map.find(key) != question_map.end()) {
        std::cout << question_map[key] << std::endl;
      } else {
        std::cout << "Invalid key number, please try again." << std::endl;
      }

    } catch (std::exception const& e) {
      std::cout << "Invalid input, please try again." << std::endl;
    }
  }

  return 0;
}

该程序使用了一个 std::map 对象来存储每个数字对应的问题。在程序启动时,我们创建了一个 question_map 对象,并为每个数字关联了一个字符串。

然后,我们进入一个无限循环,每次提示用户输入一个数字。如果用户输入的是退出命令,我们就通过 break 语句退出循环,否则我们将输入解析为整数并在 question_map 中查找对应的问题字符串。如果找到了相应的字符串,我们就打印它;否则,我们就提示用户输入一个有效的数字。

请注意,我们使用了 try 和 catch 语句来捕获输入无效或数字不在 question_map 中的情况,并向用户发出相应的提示。

解答如下

img



#include <iostream>
using namespace std;
string c[9]= {"打印文本1","打印文本2","打印文本3","打印文本4","打印文本5","打印文本6","打印文本7","打印文本8","打印文本9"};
int main()
{
    int num;
    while (true)
    {
        cout << "请输入数字(输入0退出程序):" << endl;
        cin >> num;
        cout<<c[num-1]<<endl;
        if(num==0||num>9||num<0)
            break;
    }

    return 0;
}

定义一个数据结构,成员有,key也就是你说的数字,还有问题描述;然后定义一个这struct的数组;
这样,每次输入后解析后,在这个数组里查询一下,有的话就输出对应的问题。

。。。