> 文档中心 > 杭电oj部分新手入门题目全解-2000

杭电oj部分新手入门题目全解-2000

因为杭电前面的这些新手题比较容易,所以我就没有讲解的那么详细了,如果对于题目有什么问题或者认为我的讲解出现了问题的情况,欢迎各位在评论里提出来。

那么废话不多说,直接进入正题:

杭电oj2000

ASCII码排序

时间限制: 2000/1000 MS (Java/其他) 内存限制: 65536/32768 K (Java/其他)
提交总数: 343304 被接受的提交数量: 132973

  问题描述 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。     输入 输入数据有多组,每组占一行,有三个字符组成,之间无空格     输出 对于每组输入数据,输出一行,字符中间用一个空格分开。     示例输入

qwe asd zxc示例输出e q wa d sc x z
#include#includeusing namespace std;int cmp(const void* a, const void* b)   //这是一个比较器,给a[i]数组进行比较{return *(char*)a - *(char*)b;//从小到大排序,把a,b位置反过来就是从大到小   }int main(){char a[4];char x, y, z;while (cin >> x >> y >> z){a[0] = x;a[1] =y;a[2] = z;//将输入的三个字符赋值给数组qsort(a, 3, sizeof(a[0]), cmp);//qsort快排,将数组进行排序for (int i = 0; i <= 2; i++)//输出数组{if(i<2)cout << a[i] << " ";//前两个字符后面需要留出一个空格if (i == 2)cout << a[i];//最后一个字符后不需留空格}cout << endl;//在一组输出结束后需要换行}return 0;}

       此题的一个小难点就是对字符进行排序,疯封这里运用的是C++里已经封装好了的qsort排序,在运用qsort排序时,我们需要写一个比较器,也就是cmp函数。关于qsort排序以及cmp比较器的写法与用法,疯封在此后会专门写一篇文章来进行介绍。

       有些同学此题提交不过关的部分原因是因为输出时每个字符后面都留有一个空格,也就是下图:

for (int i; i <= 2; i++){cout << a[i] << " ";}

这个输出会在第三个字符的后面留出一个空格,而原题的输出案例中,第三个字符后面是没有空格的。

 所以在这里我们需要选择一下:

for (int i = 0; i <= 2; i++){if(i<2)cout << a[i] << " ";if (i == 2)cout << a[i];}

        好了,今天的题就讲到这里,都看到这里了,确定不来个点赞加关注吗?