8.编写一个C语言程序,接受一个字符串参数,返回该字符串中第一个出现次数最多的字符
时间: 2024-03-07 15:49:56 浏览: 19
以下是一个使用C语言编写的程序,可以接受一个字符串参数,返回该字符串中第一个出现次数最多的字符:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int count[256] = {0};
int len = strlen(str);
for (int i = 0; i < len; ++i) {
count[(int)str[i]]++;
}
int max_count = 0;
char max_char;
for (int i = 0; i < 256; ++i) {
if (count[i] > max_count) {
max_count = count[i];
max_char = (char)i;
}
}
printf("第一个出现次数最多的字符是:%c\n", max_char);
return 0;
}
```
程序先定义了一个`count`数组,用于统计每个字符出现的次数。然后使用循环遍历字符串中的每个字符,将其对应的计数器加1。接着再次使用循环遍历`count`数组,找到出现次数最多的字符,并记录其出现次数和字符本身。最后输出第一个出现次数最多的字符即可。
相关问题
编写一个函数,接受一个字符串参数,返回该字符串中第一个出现次数最多的字符c语言
以下是一个简单的 C 代码示例,它使用了哈希表来计算字符串中出现次数最多的字符:
```c
#include <stdio.h>
#include <string.h>
char findMostFrequentChar(char* str) {
int len = strlen(str);
int count[256] = {0}; // 哈希表,存储每个字符出现的次数
int max_count = 0;
char result;
for (int i = 0; i < len; i++) {
count[(int)str[i]]++;
if (count[(int)str[i]] > max_count) {
max_count = count[(int)str[i]];
result = str[i];
}
}
return result;
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
char result = findMostFrequentChar(str);
printf("出现次数最多的字符是:%c\n", result);
return 0;
}
```
这个函数首先将字符串转换为字符数组,然后使用一个长度为256的哈希表来存储每个字符出现的次数。遍历字符串时,每当遇到一个字符,就将对应的哈希表项加1。同时,如果该字符出现的次数超过了当前记录的最大次数,就将该字符记录为结果,并更新最大次数。最后,返回结果即可。
编写一个C语言程序,使任意输入字符串,将该字符串中"yes"替换成"no".
好的,这是一个简单的C语言程序,可以实现你的要求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 定义字符串最大长度
char* replace(char* str) { // 实现字符串替换的函数
char* ptr;
if ((ptr = strstr(str, "yes")) != NULL) { // 判断是否需要替换
strcpy(ptr, "no"); // 替换
strcat(ptr+2, str+ptr-str+3); // 将后面的字符串拼接回去
}
return str;
}
int main() {
char str[MAX_LEN];
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin); // 从标准输入读取字符串
replace(str); // 调用替换函数
printf("替换后的字符串为:%s", str); // 输出结果
return 0;
}
```
你可以输入任意字符串,并在其中包含几个"yes",程序会自动将它们替换成"no"。注意,这个程序只会替换第一个"yes",如果字符串中有多个"yes"需要替换,可以考虑用循环实现。