输入多组字符,为啥老是输入不进去每一组的最后一个字符

输入多组字符,为什么老是输入不进去每一组的最后一个字符?
描述:ascii码排序。
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
#include<stdio.h>
void exchange(char &ch1,char &ch2);
int main()
{
int n,temp;
char ch1,ch2,ch3;
scanf("%d\n",&n);
while(n--)
{
ch1=getchar();ch2=getchar();ch3=getchar();
exchange(ch1,ch2);
exchange(ch2,ch3);
exchange(ch3,ch1);
printf("%c %c %c\n",ch1,ch2,ch3);
}


return 0;
}

void exchange(char &ch1,char &ch2)
{
int temp=0;
if(ch1>ch2)
{
temp=ch1;
ch1=ch2;
ch2=temp;
}
return;
}


然而每组的最后一个字符都没有被录入那一组的字符元素。
数据 printf 测试

------解决方案--------------------
因为 你每次都要getchar()一次。循环第一次是正确的   第二次开始getchar会获取回车符,所以ch1,ch2,ch3当中有一个 是回车。

修改方法你在ch1=getchar();ch2=getchar();ch3=getchar();这句后面再加个getchar();就OK了

------解决方案--------------------
应该是每次的回车符引起的!修改下程序