作者在 2015-07-01 16:43:13 发布以下内容
ASCII码排序
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
int main(void){
int num=0,i,tmp;
char inputs[3] = {0};
char* outputs = (char*)malloc(sizeof(char)*100);
int pos=0;
scanf("%d\n",&num);
if(num != 0){
for(i=0;i<num;i++){
scanf("%c%c%c",&inputs[0],&inputs[1],&inputs[2]);
fflush(stdin); //要先清理下缓存,不然第二次输入就出问题了
//比较大小
if(inputs[0]>inputs[1]){
tmp = inputs[0];
inputs[0] = inputs[1];
inputs[1] = tmp;
}
if(inputs[0]>inputs[2]){
tmp = inputs[0];
inputs[0] = inputs[2];
inputs[2] = tmp;
}
if(inputs[1]>inputs[2]){
tmp = inputs[1];
inputs[1] = inputs[2];
inputs[2] = tmp;
}
*(outputs+pos++) = inputs[0];
*(outputs+pos++) = inputs[1];
*(outputs+pos++) = inputs[2];
*(outputs+pos++) = '\n';
}
*(outputs+pos) = '\0';
}
while(*outputs != '\0'){
printf("%c",*outputs++);
}
outputs=NULL; //要先将指针置空才能释放内存
free(outputs);
return 0;
}