uva -- 10815 Andy's First Dictionary

来源:互联网 发布:sqlserver 分组排序 编辑:程序博客网 时间:2024/04/30 13:28

水题一道,但仍然不甚了解,若有知情的大神,希望提点一二,不胜感激

本题是要将输入的一些英文按字典顺序排列,于是可用qsort来完成,下面是ac的代码:

#include<stdlib.h>char alp[1000000][50];char scan[1000000][50];int cmp(const void *a, const void *b){return strcmp((char *)a,(char *)b);}int main(){int m = 0,n = -1,ok = 0;char ch;while((ch = getchar()) != EOF){    if(isalpha(ch)){alp[m][++n] = tolower(ch);ok = 1;}else if(ok){m++;n = -1;ok = 0;}}qsort(alp,m,sizeof(alp[0]),cmp);if(strcmp(alp[0],"")) printf("%s",alp[0]);for(int i = 1; i < m; i++)if(strcmp(alp[i],alp[i-1]) && strcmp(alp[i],"")) printf("%s",alp[i]);return 0;}
但我不明白,使用scanf来读入字符串竟一直不过,代码如下:

#include<stdlib.h>char alp[1000000][50];char scan[1000000][50];int cmp(const void *a, const void *b){return strcmp((char *)a,(char *)b);}int main(){int m = 0,n = -1,ok = 0;while(scanf("%s",scan[++m]) != EOF){for(n = 0;n <= strlen(scan[m]); n++)        if(isalpha(scan[m][n]))  alp[m][n] = tolower(scan[m][n]);alp[m][n] = '\0';}qsort(alp,m,sizeof(alp[0]),cmp);if(strcmp(alp[0],"")) printf("%s",alp[0]);for(int i = 1; i < m; i++)if(strcmp(alp[i],alp[i-1]) && strcmp(alp[i],"")) printf("%s",alp[i]);return 0;}




原创粉丝点击