标题:数字排序,求解
取消只看楼主
hanserisgood
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2022-8-16
结帖率:77.78%
已结贴  问题点数:20 回复次数:1 
数字排序,求解
题目:数字排序
问题描述
  给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。
输入格式
  输入的第一行包含一个整数n,表示给定数字的个数。
  第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
  输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。
样例输入
5
101 100 999 1234 110
样例输出
999 27
1234 10
101 2
110 2
100 1
评测用例规模与约定
  1 ≤ n ≤ 1000,给出的数都是不超过10000的非负整数。

这是我写的,最后运行结果就是没有进行排序,直接按原来的顺序对应输出了,问题应该就出在排序那里,我想不通,求解、
#include<stdio.h>
int weishu(int a)  //判断一个数是几位数;
{
    int wei=0;
    while(a!=0)
    {
        a=a/10;
        wei++;
    }
    return wei;
}
int sumNum(int a)
{
    int sum=0;
    int i,k;
    k=weishu(a);
    for(i=0;i<k;i++)
    {
        sum+=(a%10);
        a=a/10;  
    }
    return sum;    //得到了各位数字之和
}
int main(void)
{
    int n;
    scanf("%d",&n);
    int a[1000]={0};   //all 0   
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);     //为数组赋值
    }
    int b[1000]={0};
    for(i=0;i<n;i++)
    {
        b[i]=sumNum(a[i]);       //将每个对应的各位数字之和存进b【i】;
    }
//    for(i=0;i<n;i++)
//    {
//        printf("%d  %d\n",num[i],b[i]);     //打印无序的每个数字;
//    }
    int p,q;
    for(p=0;p<n-1;p++)
    {
        for(q=0;q<n-1-i;q++)
        {
            if((b[q]==b[q+1])&&(a[q]<a[q+1]))        //第一层过滤,如果有各位数字之和相等的特殊情况的话就交换a数组
            {
                int temp;
                temp=a[q];                 // b就不换了,毕竟相等
                a[q]=a[q+1];
                a[q+1]=temp;
            }
        
            else if(b[q]<b[q+1])        
            {
                int temp2,temp3;
                temp2=a[q],temp3=b[q];
                a[q]=a[q+1],b[q]=b[q+1];
                a[q+1]=temp2,b[q+1]=temp3;
            }
        }
    }
   
    for(i=0;i<n;i++)
    {
        printf("%d  %d\n",a[i],b[i]);
    }
    return 0;
}
搜索更多相关主题的帖子: 整数 for int 位数 输出 
2022-11-11 21:25
hanserisgood
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2022-8-16
得分:0 
找到问题了,在嵌套的那个for循环的条件处,应该改为去q<n-1-p;;谢谢各位
2022-11-12 14:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510617-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171570 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved