c++任意输入一串字符串,输出其中的不同字符及其个数。例如:输入abcdefgabc,输出为a->2,b->2,c->2,d->1,e->1,f->1,g->1。
时间: 2024-05-03 14:16:33 浏览: 14
可以使用哈希表来记录每个字符出现的次数,然后遍历哈希表输出结果。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char str[MAX_LEN];
int count[128] = {0}; // 哈希表
printf("请输入一个字符串:");
fgets(str, MAX_LEN, stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉字符串末尾的换行符
// 统计每个字符出现的次数
for (int i = 0; i < strlen(str); i++) {
count[(int)str[i]]++;
}
// 输出结果
for (int i = 0; i < 128; i++) {
if (count[i] > 0) {
printf("%c->%d,", i, count[i]);
}
}
printf("\n");
return 0;
}
```
输入示例:
```
请输入一个字符串:abcdefgabc
```
输出示例:
```
a->2,b->2,c->2,d->1,e->1,f->1,g->1,
```
相关问题
C++任意输入一串字符串,输出其中的不同字符及其个数。例如:输入abcdefgabc,输出为a->2,b->2,c->2,d->1,e->1,f->1,g->1。
可以使用一个数组记录每个字符出现的次数,然后遍历数组输出不同字符及其个数。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int count[256] = {0}; // 用一个大小为 256 的数组记录每个字符出现的次数
printf("请输入一串字符串:");
scanf("%s", str);
// 遍历字符串,记录每个字符出现的次数
for (int i = 0; i < strlen(str); i++) {
count[str[i]]++;
}
// 输出不同字符及其个数
for (int i = 0; i < 256; i++) {
if (count[i] > 0) {
printf("%c->%d,", i, count[i]);
}
}
return 0;
}
```
输出结果如下:
```
请输入一串字符串:abcdefgabc
a->2,b->2,c->2,d->1,e->1,f->1,g->1,
```
用c++ 任意输入一串字符串,输出其中的不同字符及其个数。例如:输入abcdefgabc,输出为a->2,b->2,c->2,d->1,e->1,f->1,g->1。
可以使用一个数组来记录每个字符出现的次数。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[1000];
int count[256] = {0}; // 初始化为0
printf("请输入字符串:");
scanf("%s", s);
int len = strlen(s);
for (int i = 0; i < len; i++) {
count[s[i]]++; // 记录每个字符出现的次数
}
for (int i = 0; i < 256; i++) {
if (count[i] > 0) {
printf("%c->%d,", i, count[i]);
}
}
printf("\n");
return 0;
}
```
在上述代码中,我们使用了一个大小为 256 的数组 `count` 来记录每个字符出现的次数,其中 `count[i]` 表示 ASCII 码为 `i` 的字符出现的次数。最后遍历一遍 `count` 数组,输出所有出现次数大于 0 的字符及其出现次数即可。