lsmCC 发表于 2023-11-6 21:05:18

为什么会没有输出呢

#include <bits/stdc++.h>
using namespace std;
//先将单词初始化,变成小写,然后进行排序
string repr(const string &s)
{
    string ans=s;
    for(int i=0;i<ans.size();i++)
    {
      ans=tolower(ans);

    }
    sort(ans.begin(),ans.end());
    return ans;
}

int main()
{
    int n=0;
    string s;
    vector<string>words;
    map<string,int> cnt;
    while(cin>>s)
    {
      if(s='#')break;
      words.push_back(s);//保留原来的字符串
      string t=repr(s);
      if(!cnt.count(t))cnt=0;//如果没有查找到了,将其默认为0
      //跟Python的字典一样,键是唯一的,count是查找键的个数,由于键只存在一个,所以最大也只能为1
      cnt++;
    }
    vector<string> a;
    for(int i=0;i<words.size();i++)
    {
      if(cnt)]==1) a.push_back(words);

    }
    sort(a.begin(),a.end());//还要排序
    for(auto i:a)
    {
      cout<<i<<endl;
    }
}

紫书上的一道题目

isdkz 发表于 2023-11-6 21:05:27

这段代码的作用是读取一系列单词,并按照一定规则进行处理和排序,最后输出只出现一次的单词。

在这段代码中,可能会出现没有输出的情况是因为输入的单词中没有以"#"开头的单词。在while循环中,当输入的单词以"#"开头时,会跳出循环,而不再继续读取和处理单词。如果输入的单词中没有以"#"开头的单词,那么while循环内的代码将不会执行,导致最后没有输出。

如果想要保证有输出,可以在输入的单词中加入以"#"开头的单词,或者修改代码,在while循环结束后添加一个判断,如果没有输出的单词,则输出一个提示信息。例如:

if(a.empty()) {
    cout << "没有只出现一次的单词" << endl;
} else {
    for(auto i:a) {
      cout << i << endl;
    }
}


这样就可以在没有只出现一次的单词时输出提示信息。

Mike_python小 发表于 2023-11-6 21:07:09

以下是修改过的代码:


#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

// 先将单词初始化,变成小写,然后进行排序
string repr(const string& s) {
    string ans = s;
    for (int i = 0; i < ans.size(); i++) {
      ans = tolower(ans);
    }
    sort(ans.begin(), ans.end());
    return ans;
}

int main() {
    int n = 0;
    string s;
    vector<string> words;
    map<string, int> cnt;

    while (cin >> s) {
      if (s == '#')
            break;
      words.push_back(s); // 保留原来的字符串
      string t = repr(s);
      if (!cnt.count(t))
            cnt = 0; // 如果没有查找到了,将其默认为0
      cnt++;
    }

    vector<string> a;
    for (int i = 0; i < words.size(); i++) {
      if (cnt)] == 1)
            a.push_back(words);
    }

    sort(a.begin(), a.end()); // 还要排序

    for (auto i : a) {
      cout << i << endl;
    }

    return 0;
}


这个程序的功能是从标准输入中读取单词,并按照一定规则进行处理和排序后输出。它使用了vector存储单词,使用map来统计每个单词的出现次数,使用sort函数对结果进行排序。

希望这个回答对你有帮助。如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 为什么会没有输出呢