1141: 【作】【基础】数的排序
内存限制:16 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:17
解决:10
题目描述
输入n个不超过30000的整数(n≤10)。然后求出每个数的数字和,再按每个数的数字和由小到大排列输出。
输入
第一行为整数n
第二行为n个整数
第二行为n个整数
输出
由小到大排列的每个数的数字和(每个数之间保留一个空格)
样例输入 复制
4
33 104 87 16
样例输出 复制
5 6 7 15
提示
#include <iostream> using namespace std; int main() { /* 思路:读入数组元素,求出每个数的各个位的和然后对各个位的和进行排序 */ int n, a[20], i, j, t, s; cin >> n; for (i = 0; i < n; i++) { cin >> a[i]; //求出 a[i]的各个位的和,替换a[i]的值 s = 0; while (a[i] != 0) { //得到个位,将个位加到总和 s = s + a[i] % 10; //去除个位 a[i] = a[i] / 10; } //用求出的和替换原来的值 a[i] = s; } //排序:n个数排序n-1轮 //i代表排序的轮数 for (i = 1; i <= n - 1; i++) { //第i轮从下标为0的元素循环到下标为n-i-1的元素 for (j = 0; j <= n - i - 1; j++) { //如果当前数>后面的元素,交换 if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //输出排序的结果 for (i = 0; i < n; i++) { cout << a[i] << " "; } return 0; }