C语言 字符处理
发布网友
发布时间:2022-04-23 18:07
我来回答
共1个回答
热心网友
时间:2023-08-01 07:48
以下程序接受一段不超过100个单词的英文输入(不考虑I'm,its'这些有特殊符号的单词)。以Ctrl+Z结束输入。
#include "stdio.h"
#include "string.h"
char words[100][81];
int cnt[100]={0};
int n=0;
int lookup(char *str)
{
for(int i=0;i<n;i++)
if(strcmp(str,words[i])==0)
{
cnt[i]++;
return i;
}
return -1;
}
void add(char *str)
{
strcpy(words[n],str);
cnt[n]=1;
n++;
}
main()
{
char section[10000];
char str[81];
char c;
int i,max;
i=0;
while((c=getchar())!=EOF)
{
section[i++]=c;
}
section[i]='\0';
i=0;
while(sscanf(section+i,"%[a-zA-Z])",str)==1)
{
if(lookup(str)==-1)
add(str);
i+=strlen(str)+1;
}
max=0;
for(i=1;i<n;i++)
if(cnt[i]>cnt[max])
max=i;
printf("%s:%d\n",words[max],cnt[max]);
i=0;
while(section[i])
{
if(section[i]==words[max][0])
{
char *p=section+i;
char *q=words[max];
while(*p && *q && *p==*q)
{
p++;q++;
}
if(!((*p>='a' && *p<='z') || (*p>='A' && *p<='Z')) && !((*q>='a' && *q<='z') || (*q>='A' && *q<='Z')))
{
while(q>words[max])
{
printf("?");
q--;
i++;
}
continue;
}
}
printf("%c",section[i]);
i++;
}
}