ASCII码排序 | 您所在的位置:网站首页 › ascii码从小到大的顺序 › ASCII码排序 |
ASCII码排序
题目描述题目理解第一种方式--if判断第二种方式--数组排列
源代码
题目描述
Problem Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。 Input 输入数据有多组,每组占一行,有三个字符组成,之间无空格。 Output 对于每组输入数据,输出一行,字符中间用一个空格分开。 Sample Input qwe asd zxc Sample Output e q w a d s c x z 题目理解通过题目我们可知,本题是要求我们根据ASCII码对我们输入的字符进行比较,通过ASCII码的大小将字符按从小到大的顺序输出。 本题要求每3个字符进行比较,因此可以有两种方法解决 第一种方式–if判断比较字符只有三个数,我们可以通过if判断语句直接对3个字符进行判断。 输入三个字符,先将前两个数据进行比较,当前一个字符的ASCII码值大于后一个字符时,我们可以将两个字符通过第三方字符进行交换。两个字符交换后,再重复对后两个字符进行大小判断、交换。此时,已经将最后一个字符交换成为最大的字符了,再将前两个字符进行比较、交换,就将全部字符按照从小到大的顺序排列。 第二种方式–数组排列第二种方式在只有三个数据这样小数量的排列其实不太适用,本次采用选择排列的方式进行解决,具体选择排列的讲解请参考选择排列讲解 两种方式主要的区别在于第一种方式采用的是字符输入,而第二种方式则是采用了字符数组输入,两者其实大同小异。 源代码 #include #include int main() { char a,b,c,d; while(scanf("%c%c%c",&a,&b,&c)!=EOF) { if(a>b) { d=a; a=b; b=d; } if(b>c) { d=c; c=b; b=d; } if(a>b) { d=a; a=b; b=d; } printf("%c %c %c\n",a,b,c); getchar(); } return 0; } #include #include int main() { char a,b,c,d; char arr[3]; while(scanf("%s",arr)!=EOF) { for (int i = 0; i < 3-1; i++) { int minIndex = i; for (int j = i+1; jarr[j]) { minIndex = j; } } if(minIndex != i) { arr[i] = arr[i]^arr[minIndex]; arr[minIndex] = arr[i]^arr[minIndex]; arr[i] = arr[i]^arr[minIndex]; } } printf("%c %c %c\n",arr[0],arr[1],arr[2]); } return 0; } |
CopyRight 2018-2019 实验室设备网 版权所有 |