C++输入一行字符,以‘#结尾’,最多10个,之后再输入一个字符,在输入的一行字符中查找后输入的那个字符, 输出该字符在之前输入的字符中出现的次数,没有则输出0.
时间: 2023-12-11 22:05:04 浏览: 68
以下是实现该功能的 C++ 代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[11]; // 存储输入的一行字符,最多10个
char ch; // 存储要查找的字符
int count = 0; // 计数器,记录要查找的字符在输入的字符中出现的次数
cin.getline(str, 11, '#'); // 输入一行字符,以 # 结尾
cin >> ch; // 再输入一个字符,即要查找的字符
// 遍历输入的字符,查找要查找的字符出现的次数
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == ch)
{
count++;
}
}
// 输出结果
cout << count << endl;
return 0;
}
```
注意,本题目要求输入的一行字符最多只能有 10 个,因此在定义字符数组时,大小应该为 11,以便存储最后的结尾符 #。
同时,使用 `cin.getline()` 函数读取一行字符时,第二个参数应该指定数组大小,以防止输入字符过多,导致数组越界。在本题目中,应该指定为 11。
相关问题
C++输入一行大写英文字符(最多30个),以#号结尾,按照ASCII码的值,从小到大,输出每种字符出现的次数。
以下是C++的代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int count[128] = {0}; // 用一个数组记录每个字符出现的次数,ASCII码共有128个字符
char str[31]; // 输入的字符串最大长度为30,加上结尾的#号,总长度为31
cin.getline(str, 31, '#'); // 输入一行字符,以#号结尾
int len = strlen(str);
for (int i = 0; i < len; i++) {
count[(int)str[i]]++; // 统计每个字符出现的次数
}
for (int i = 0; i < 128; i++) {
if (count[i] > 0) { // 如果该字符出现过,则输出它的ASCII码和出现次数
cout << (char)i << " " << count[i] << endl;
}
}
return 0;
}
```
这个程序利用了一个长度为128的数组 `count` 来记录每个字符出现的次数,数组下标对应字符的 ASCII 码。输入的字符串通过 `cin.getline` 函数读入,读到 # 号为止。接下来循环遍历字符串中的每个字符,将其对应的 `count` 数组元素加一。最后再循环一遍 `count` 数组,输出出现次数不为零的字符及其出现次数。
输入一行字符(最多30个),以#号结尾,按照这一行字符中每种字符出现的次数,从小到大输出字符及其出现次数。次数相同则字符编码小的先输出。格式提醒,每行按照先字符,后次数的顺序输出,每个信息项后都有空格,每种字符占一行。c++实现
好的,这是一个统计字符出现次数的问题,下面是使用 C++ 实现的代码:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
int main() {
string s;
getline(cin, s); // 读取一行字符串
map<char, int> mp; // 存储字符出现次数
for (int i = 0; i < s.size(); i++) {
if (s[i] == '#') {
break; // 遇到 # 号退出循环
}
mp[s[i]]++; // 统计字符出现次数
}
// 按要求排序
vector<pair<char, int>> v(mp.begin(), mp.end());
sort(v.begin(), v.end(), [](pair<char, int>& a, pair<char, int>& b) {
if (a.second != b.second) {
return a.second < b.second;
}
return a.first < b.first;
});
// 输出结果
for (int i = 0; i < v.size(); i++) {
cout << v[i].first << " " << v[i].second << endl;
}
return 0;
}
```
这段代码中,我们首先使用 `getline` 函数读取用户输入的一行字符串,并遍历每个字符,将其出现次数存储在 `map` 容器中。接着,我们将 `map` 容器中的键值对转换为 `vector`,并按照要求排序。
在排序函数中,我们首先按照出现次数排序,如果出现次数相同,则按照字符编码排序。最后,我们遍历排序后的结果,输出每个字符及其出现次数。
需要注意的是,我们在输出结果时,每种字符占一行,所以需要在输出后加上换行符 `\n`。
阅读全文