- 时间限制: 1 Sec 内存限制: 256 MB
题目描述
请将文本文件word.dic下载保存到当前目录下,
要求编写C程序,对word.dic中的单词排序,并将排序结果显示在屏幕上。
特别注意,排序时忽略大小写,详见样例数据。
输入
实际的测试文件word.dic不超过3000行,每行包含一个单词(或词组),
每个单词的左侧没有空格之类的多余符号,每个单词(或词组)的总长度不超过30。
输出
输出排序后的单词(或词组),每个单词(或词组)占1行。
样例输入
例如,word.dic的内容为:
Zero
one
two
three
four
five
six
seven
eight
nine
ten
样例输出
eight
five
four
nine
one
seven
six
ten
three
two
Zero
- 【Solution】
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef FILE *FL;
int main(int argc, char *argv[])
{
FL f1;
f1=fopen("word.dic","r");
if(f1==NULL)
{
printf("read error!\n");
exit(0);
}
char s1[3002][32],s2[3002][32];
int n,x,y,z,i=0,j,f,k;
char c1[102],c2[102];
while(fgets(c1,102,f1))
{
n=strlen(c1);
for(k=0;k<n;k++)
if(c1[k]=='\n')
c1[k]='\0'; //把文件中的换行符以'\0'的形式存入数组
strcpy(s1[i],c1);
for(f=0;f<n;f++)
if('A'<= c1[f]&&'Z'>=c1[f])
c1[f]=c1[f]+32;
strcpy(s2[i],c1);
i++;
}
for(x=0;x<i-1;x++)
for(y=0;y<i-1-x;y++)
{
if(strcmp(s2[y],s2[y+1])>0)
{
strcpy(c2,s2[y]);
strcpy(s2[y],s2[y+1]);
strcpy(s2[y+1],c2);
strcpy(c2,s1[y]);
strcpy(s1[y],s1[y+1]);
strcpy(s1[y+1],c2);
}
}
for(n=0;n<i;n++)
printf("%s\n",s1[n]);
fclose(f1);
return 0;
}
持续更新中…