|
发表于 2020-10-4 08:08:39
From FishC Mobile
|
显示全部楼层
看到你的贴子的代码那么不易理解,我就发个我以前自己写的代码,应该更容易理解,其实这个是半成品,会保存中文字符串,我的成品可以数高考英语卷的单词频率。
用法:运行后,粘贴,最后输入ababc,回车,就会输出结果。
#include<stdio.h>
#include<string.h>
//这个函数用来判断s是否已被保存,是返回1,不是就返 0
int isin(char s[300],char a1[3500][300],int a2[3500],int sum);
int n;//全局变量
int main()
{
char a1[3500][300]={0},s[300];//s用来暂时保存获得的字符串
int a2[3500]={0},sum=0,i;//sum是所有字符串的总数,可以方便知道新的字符串保存的位置
while(1)
{
scanf("%s",s);
if(strcmp(s,"ababc")==0)break;//当读取到ababc后输出结果
if(isin(s,a1,a2,sum)){a2[n]++;}//对应次数加一, 此时n为对应字符串所在位置。
else
{
strcpy(a1[sum],s);//保存新的字符串
sum++;
a2[sum-1]++;//对应次数加一
}
}
i=1;
printf("\n\n\n结果为:\n");
printf("出现的字符串总数为%d\n",sum);
while(i<sum)
{
printf("%s 出现次数为%d\n",a1[i],a2[i]);// 相当于很多空格,可以更整齐地输出
i++;
}
return 0;
}
//这个函数用来判断s是否已被保存,是返回1, 不是就返回0
int isin(char s[300],char a1[3500][300],int a2[3500],int sum)
{
int i=0;
while(i<sum)
{
if(strcmp(s,a1[i])==0)
{
n=i;
return 1;
}
i++;
}
return 0;
} |
|