user-0 提问: VC上正确，为什么在ACM上提示”答案错误“，哪里出错了

回复:
user: user-1
content: 题目是什么  。   。

user: user-0
content: 引用 6 楼 cfjtaishan 的回复:[quote=引用 4 楼 pineapple__ 的回复:] [quote=引用 2 楼 cfjtaishan 的回复:] #include<stdio.h>  void swap(char *p, int num) {     char temp;     for(int i=0;i<num;++i)         for(int j=i+1;j<num;++j)         {             if(*(p+i)>*(p+j))             {                 temp=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=temp;             }         } } int main(void) {     int N, i;     char a[4],b[4],ch;     scanf("%d",&N);     if (N > 4)         return 0;     ch = getchar();     fgets(a, N, stdin);     fgets(b, N, stdin);      swap(a, N);     for (i = 0; i < N; i++)         printf("%c ", a[i]);     putchar(10);      swap(b, N);     for (i = 0; i < N; i++)         printf("%c ", b[i]);     putchar(10);     return 0; } 代码写的太硬，灵活度不高； 有漏洞，如果按照你的代码去运行（每次输入3个字母，固定的），可能还可以。但是作为一个通用行的代码，可以输入2个，一个或者都不输入。 对对对，这样就比较灵活了，学习了，谢谢您。有个问题不太明白，fgets（）函数中的stdin是什么意思啊？[/quote] stdin是标准输入，就是键盘[/quote]  明白了，谢谢你

user: user-2
content: 引用 4 楼 pineapple__ 的回复:[quote=引用 2 楼 cfjtaishan 的回复:] #include<stdio.h>  void swap(char *p, int num) {     char temp;     for(int i=0;i<num;++i)         for(int j=i+1;j<num;++j)         {             if(*(p+i)>*(p+j))             {                 temp=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=temp;             }         } } int main(void) {     int N, i;     char a[4],b[4],ch;     scanf("%d",&N);     if (N > 4)         return 0;     ch = getchar();     fgets(a, N, stdin);     fgets(b, N, stdin);      swap(a, N);     for (i = 0; i < N; i++)         printf("%c ", a[i]);     putchar(10);      swap(b, N);     for (i = 0; i < N; i++)         printf("%c ", b[i]);     putchar(10);     return 0; } 代码写的太硬，灵活度不高； 有漏洞，如果按照你的代码去运行（每次输入3个字母，固定的），可能还可以。但是作为一个通用行的代码，可以输入2个，一个或者都不输入。 对对对，这样就比较灵活了，学习了，谢谢您。有个问题不太明白，fgets（）函数中的stdin是什么意思啊？[/quote] stdin是标准输入，就是键盘

user: user-1
content: 答案错误是因为，不是固定的输入两组数据，输入多少组是变化的，不符合题意，所以错误

user: user-0
content: 引用 2 楼 cfjtaishan 的回复:#include<stdio.h>  void swap(char *p, int num) {     char temp;     for(int i=0;i<num;++i)         for(int j=i+1;j<num;++j)         {             if(*(p+i)>*(p+j))             {                 temp=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=temp;             }         } } int main(void) {     int N, i;     char a[4],b[4],ch;     scanf("%d",&N);     if (N > 4)         return 0;     ch = getchar();     fgets(a, N, stdin);     fgets(b, N, stdin);      swap(a, N);     for (i = 0; i < N; i++)         printf("%c ", a[i]);     putchar(10);      swap(b, N);     for (i = 0; i < N; i++)         printf("%c ", b[i]);     putchar(10);     return 0; } 代码写的太硬，灵活度不高； 有漏洞，如果按照你的代码去运行（每次输入3个字母，固定的），可能还可以。但是作为一个通用行的代码，可以输入2个，一个或者都不输入。 对对对，这样就比较灵活了，学习了，谢谢您。有个问题不太明白，fgets（）函数中的stdin是什么意思啊？

user: user-0
content: 引用 1 楼 kugeniha 的回复:题目是什么  。   。 ACM中ASCII码排序 描述 输入三个字符（可以重复）后，按各字符的ASCII码从小到大的顺序输出这三个字符。 输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据，每组输入数据都是占一行，有三个字符组成，之间无空格。 输出 对于每组输入数据，输出一行，字符中间用一个空格分开。 样例输入 2 qwe asd 样例输出 e q w a d s

user: user-2
content: #include<stdio.h>  void swap(char *p, int num) {     char temp;     for(int i=0;i<num;++i)         for(int j=i+1;j<num;++j)         {             if(*(p+i)>*(p+j))             {                 temp=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=temp;             }         } } int main(void) {     int N, i;     char a[4],b[4],ch;     scanf("%d",&N);     if (N > 4)         return 0;     ch = getchar();     fgets(a, N, stdin);     fgets(b, N, stdin);      swap(a, N);     for (i = 0; i < N; i++)         printf("%c ", a[i]);     putchar(10);      swap(b, N);     for (i = 0; i < N; i++)         printf("%c ", b[i]);     putchar(10);     return 0; } 代码写的太硬，灵活度不高； 有漏洞，如果按照你的代码去运行（每次输入3个字母，固定的），可能还可以。但是作为一个通用行的代码，可以输入2个，一个或者都不输入。