#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
char words[5000][500];
char output[5000][500];
char temp[500];
int a, time;
void deal( )
{
int i, j, start, flag;
a = 0;
start = 0;
for( i = 0; i < time; i++ )
{
if( words[i][0] == '\n' )
continue;
for( j = 0; j < 300; j++ )
{
if( isalpha( words[i][j]) )
{
flag = 1;
temp[start++] = tolower( words[i][j] );
temp[start] = '\0';
}
else
{
if( flag )
{
strcpy( output[a++], temp );
flag = 0;
}
start = 0;
}
if( words[i][j] == '\0' )
{
if( flag )
{
strcpy( output[a++], temp );
flag = 0;
start = 0;
}
break;
}
}
}
};
int cmp( const void *s1, const void *s2 )
{
return strcmp( (char*)s1, (char*)s2 );
};
int main()
{
int i;
char temp[500];
time = 0;
i = 0;
while( fgets(words[i++], 500, stdin) )
{
time++;
};
deal( );
qsort( output, a, sizeof(output[0]), cmp );
for ( i = 0; i < a; i++ )
{
if( strcmp(output[i],output[i+1]) != 0 ) puts( output[i] );
}
return 0;
}
上面这是不ac 的代码, 我写的排序绝对是没有问题,不知道为什么这道题 用fgets读取就会WA 求大神指教,下面这个getchar就ac了
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
char word[100010][50] = {'\0'};
int cmp( const void *s1, const void *s2 )
{
return strcmp( (char*)s1, (char*)s2 );
};
int main()
{
char ch;
int n = 0, len = 0;
while( 1)
{
if( (ch = getchar()) == EOF) break;
if( isalpha( ch) )
word[n][len ++] = tolower(ch);
else
if( isalpha( word[n][0])) {
word[n ++][len] = '\0';
len = 0;
}
}
qsort( word, n, sizeof (word[0]), cmp);
for( int i = 0; i < n; i ++)
if( strcmp( word[i], word[i + 1]))
printf( "%s\n", word[i]);
return 0;
}