单词表的排序


  • 时间限制: 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;
}

持续更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值