使用c语言编写一个检索出字符串中出现次数最多的那个字符
时间: 2023-06-08 19:08:28 浏览: 122
好的,我可以为您提供一个简单的C语言代码来检索出字符串中出现次数最多的字符。请注意,这只是一个基本的示例代码。
```c
#include <stdio.h>
#define MAX_SIZE 100
int main()
{
char str[MAX_SIZE];
int freq[256] = {0}, max_freq = 0, len, i;
// 获取输入的字符串
printf("输入一个字符串:\n");
fgets(str, MAX_SIZE, stdin);
len = strlen(str);
// 统计每个字符出现的次数
for(i=0; i<len; i++)
{
freq[str[i]]++;
}
// 找到最大频率
for(i=0; i<256; i++)
{
if(freq[i] > freq[max_freq])
{
max_freq = i;
}
}
// 输出结果
printf("出现次数最多的字符是 '%c', 出现了 %d 次.\n", max_freq, freq[max_freq]);
return 0;
}
```
您可以测试这个代码,输入一段字符串,它将输出出现次数最多的字符和它的频率。
相关问题
用C语言编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
以下是两种用C语言编写程序统计一行字符中单词个数的例子:
1.使用while循环和if语句逐个字符检索,统计单词数。
```c
#include <stdio.h>
int main() {
int sum=0;//字符总数
char a;//单字检索
while(1)//死循环在使用时注意与break搭配
{
scanf("%c",&a);
if(a=='\n') break;
else if(a!=' ')//确保开始时符号不是空格或回车
{
sum++;//检索首字母,统计单词数
while(1)//单词检索
{
scanf("%c",&a);
if(a==' '||a=='\n')//检索到词尾,这样就形成了两空格夹一个单词的形式, break; //解决了単词间空格个数不定问题
}
}
if(a=='\n') break;//只有当单词后为回车时结束两层循环
}
printf("%d",sum);
return 0;
}
```
2.使用字符数组和for循环逐个字符判断,统计单词数。
```c
#include <stdio.h>
int main() {
char a[1000];//字符数组
gets(a);//获取字符串
int i;//循环变量
int l;//记录字符串长度
int num = 0;//单词数量
for(i=0;a[i]!='\0';i++);//记录字符串长度
l=i;
for(i=0;i<l;i++)//循环判断
{
if(a[i]!=' ' && a[i+1]==' ')//符合[?][空格]的情况
num++;
if(a[i]!=' ' && a[i+1]=='\0')//符合[?]['\0']的情况
num++;
}
printf("%d\n",num);
return 0;
}
```
C语言字符串分割函数
C语言中的字符串分割函数是strtok。它可以将一个字符串分解成一组小字符串,根据指定的分隔符进行切割。
strtok函数的声明如下:
char *strtok(char *str, const char *delim)
参数说明:
1. str - 要被分解成一组小字符串的字符串。
2. delim - 包含分隔符的C字符串。
返回值:
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。
下面是一个例子:
#include <string.h>
#include <stdio.h>
int main() {
char str[80] = "This is - www.runoob.com - website";
const char s = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, s);
}
return 0;
}
输出结果:
This is
www.runoob.com
website
需要注意的是,strtok函数会修改原字符串的值,如果需要保留原值,则需要保存一份副本。另外,如果想要分割多种字符,可以使用数组。