杭电2000ASCII码排序(非数组方法)
Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output
对于每组输入数据,输出一行,字符中间用一个空格分开。
Sample Input
qwe asd zxc
Sample Output
e q w a d s c x z
1,这是一道很水的题目;最简单的代码就是用数组进行冒泡排序吧;不多说先直接上冒泡排序的代码,等下再聊非数组的方法;
#include<stdio.h>
intmain()
{
int i,j;
char ch[3],t;
while(gets(ch)){
for(i=0;i<2;i++)
for(j=0;j<2-i;j++){
if(ch[j]>ch[j+1]){
t=ch[j];
ch[j]=ch[j+1];
ch[j+1]=t;
}
}
printf("%c %c %c\n",ch[0],ch[1],ch[2]);
}
return 0 ;
}
这就是冒泡排序的方法来解决这个问题的;
2,但对于没有学到数组未了解排序的同学而言我们应该怎么做了;
对,就是用if,else if;来解决;
上代码吧
#include<stdio.h>
int main()
{
char min, max, z, a, b, c;
while(scanf("%c%c%c",&a, &b, &c) != EOF){
getchar();
if(a >= b){
if(a >= c){
max = a;
if(b >= c){
min = c;
z = b;
}
else{
min = b;
z = c;
}
}
else{
max = c;
if(a >= b){
min = b;
z = a;
}
else{
min = a;
z = b;
}
}
}
else{
if(b >= c){
max = b;
if(a >= c){
min = c;
z = a;
}
else{
min = a;
z = c;
}
}
else{
max = c;
if(a >= b){
min = b;
z = a;
}
else{
min = a;
z = b;
}
}
}
printf("%c %c %c\n",min, z, max);
}
return 0 ;
}
这个方法很没有进行一点简便;因为这是直接通过if来找出最大最小值与中间值的;
顺便说一下要怎么打测试数据;
abc acb cba cabbac bca;按照这样的测试数据去检验是焊好的;有没有觉得;