#include
#include
//获取用户输入文本
void GetPassage(char str[])
{
printf("please input a passage:\n");
gets(str);
}
//将文本拆分为单词保存在数组中
void WordSepa(char str[],char word[][20])
{
int i=0,j,k=0,pos=0;
while(1)
{
if(str[i]==' ' || str[i]==',' || str[i]=='.' || str[i]==0)
{
for(j=0;j {
word[k][j]=str[pos];
}
k++;
pos++;
}
if(str[i]==0) break;
i++;
}
}
//统计单词的数量,以及将单词数组中重复单词删除,数量和单词分两个数组保存
void ProcessPassage(int wordcount[],char wordset[][20],char word[][20])
{
int i,j;
for(i=0;i<50;i++)
{
if(word[i][0]!=0)
{
strcpy(wordset[i],word[i]);
for(j=0;j<50;j++)
{
if(strcmp(wordset[i],word[j])==0)
{
wordcount[i]++;
if(i!=j) word[j][0]=0;
}
}
}
}
}
//冒泡排序法进行排序,同时对数量数组和单词数组进行交换,保证了单词与数量的对应关系
void Sort(int wordcount[],char wordset[][20])
{
int i,j;
for(i=0;i<50;i++)
{
for(j=i+1;j<50;j++)
{
if(wordcount[j]>wordcount[i])
{
int tmp=wordcount[i];
wordcount[i]=wordcount[j];
wordcount[j]=tmp;
char tmpchar[1][20]={0};
strcpy(tmpchar[0],wordset[i]);
strcpy(wordset[i],wordset[j]);
strcpy(wordset[j],tmpchar[0]);
}
if(wordcount[j]==wordcount[i] && wordcount[i]!=0 && wordcount[j]!=0)
{
if(strcmp(wordset[i],wordset[j])<0)
{
char tmpchar[1][20]={0};
strcpy(tmpchar[0],wordset[i]);
strcpy(wordset[i],wordset[j]);
strcpy(wordset[j],tmpchar[0]);
}
}
}
}
}
int main(void)
{
char str[1000];
GetPassage(str);
char word[50][20]={0};
WordSepa(str,word);
int wordcount[50]={0};
char wordset[50][20]={0};
ProcessPassage(wordcount,wordset,word);
Sort(wordcount,wordset);
//将排序后的单词进行输出
int i;
for(i=0;i<50;i++)
{
if(wordcount[i]!=0)
printf("%s(%d) ",wordset[i],wordcount[i]);
}
printf("\n");
return 0;
}
我编译运行通过,你觉得还可以的话,赏个10块8块微信红包什么的,我肯定比别人收费便宜,知道积分我有的是,而且代码都贴出来了
问题描述,Hey,欢迎来到杭州移用大学在线测试在这个问题里,你的任务是计算总和(n)=1+2+3+……+n输入一连串的整数n,每条线一根整数输出每个案例,输出总和为一条线,然后是一个空行你可能会认为结果将会在标有32位整数范围里输入样本1100 输出...8463
c语言实验 可以写的
什么操作系统上用的