NOIP 普及组初赛 · NOIP 2017 普及组初赛试题 第 23 题

阅读程序 · 答案 z · 考点:输入输出、位运算、分支结构、循环结构、字符串(string)

← 整套速查表 NOIP 普及组初赛 全部真题

题目

阅读程序写结果:

#include<iostream>
using namespace std;
int main()
{
    int t[256];
    string s;
    int i;
    cin >> s;
    for (i = 0; i < 256; i++)
        t[i] = 0;
    for (i = 0; i < s.length(); i++)
        t[s[i]]++;
    for (i = 0; i < s.length(); i++)
        if (t[s[i]] == 1)
        {
            cout << s[i] << endl;
            return 0;
        }
    cout << "no" << endl;
    return 0;
}

输入:xyzxyw 输出:_________

答案:z

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构循环结构字符串(string)

解题思维

看到统计频次 + 顺序遍历找第一个 → 先扫一遍计数,再从头找计数为1的字符,遇到即输出并结束。

常见错误

易错点:忽略return 0的截断作用,误以为要输出所有唯一字符或最后输出'no'。

详细解析(节选)

考点:数组统计频次|循环控制流(return提前退出)

程序在做什么

程序先统计字符串中每个字符的出现次数,然后从头到尾遍历,输出第一个出现次数为1的字符。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断