|  | 
 
 发表于 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;
 }
 | 
 |