c语言scanf函数测试

作者在 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;
}

 

 

 

c/c++ | 阅读 1594 次
文章评论,共0条
游客请输入验证码
浏览52851次