请高手帮忙看看我这个关于ASCII码排序的程序哪里有错误 ,改怎么改?
请高手帮忙看看我这个关于ASCII码排序的程序哪里有错误 ,改怎么改?我运行了,结果总是每行输出一个或者两个字母,不是三个,如果有重大错误,请给个好的答案。题目如下:
ASCII码排序
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3
qwe
asd
zxc
样例输出
e q w
a d s
c x z
我写的程序是:
#include<stdio.h>
#include<malloc.h>
void main()
{
int i,n;
char *p,t;
void compare(char a[3]);
printf(" please input n=");
scanf("%d",&n);
p=(char *)malloc(3*n*sizeof(char));
printf("Please input the nums:\n");
for(i=1;i<=(3*n);i++)
{
scanf("%c",p++);
if(i%3==0)
scanf("\n",&t);
}
p=p-i;
for(i=0;i<n;)
{
compare(p);
++i;
p=p+3*i;
}
}
void compare(char a[3])
{
char t;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<3;i++)
printf("%c",a[i]);
printf("\n");
}