xdoj 50 选号程序 为什么不输出结果

问题遇到的现象和发生背景

标题
选号程序

类别
流程控制

时间限制
1S

内存限制
256Kb

问题描述
小明决定申请一个新的QQ号码,系统随机生成了若干个号码供他选择。小明的选号原则是:

  1. 选择所有号码中各位数字之和最大的号码。
  2. 如果有多个号码各位数字之和相同则选择数值最大的号码。
    请你写一个程序帮助小明选择一个QQ号码。

输入说明
输入数据由两行构成,第一行为一个整数n表示有n个待选号码(0<n<100),第二行有n个正整数,表示各个待选的号码,每个号码长度不超过9位数。每个号码之间用空格分隔,且每个号码都不相同。

输出说明
输出根据小明的选号原则选出的号码。

输入样例
5
10000 11111 22222 333 1234

输出样例
22222

问题相关代码,请勿粘贴截图
#include<stdio.h>
void swap(int* a,int* b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}
int main()
{
    int n,i=0,j=0,a[100],sum[100],b[i];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d ",&a[i]);
    }//输入数据 
    b[i]=a[i];
    for(i=0;i<n;i++)
    {
        for(sum[i]=0;a[i]!=0;)
        {
        sum[i]=sum[i]+a[i]%10;
        a[i]=a[i]/10;
        }  
    }//sum[i]为各位数字之和 
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(sum[j]>sum[j+1])
            {
                swap(&sum[j],&sum[j+1]);
                swap(&b[j],&b[j+1]);
            }
        }
    }//冒泡 
    printf("%d",b[n-1]);
    return 0;
 } 
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

#include<stdio.h>
int main(){
    int count,max,b[100],i=0,j=0,k=0;
    long a[100],n,x;
    scanf("%d",&count);
    for ( i = 0; i < count; i++)
    {
        scanf("%ld",&a[i]);
    }
    for ( j = 0; j < count; j++)
    {
        n=a[j];
        b[j]=0;
        while (n>0)
        {
            b[j]=b[j]+n%10;
            n=n/10;
        }
    }
    max=b[0];
    x=a[0];
    for ( k = 1; k < count; k++)
    {
        if (max<b[k])
        {
            max=b[k];
            x=a[k];
        }else if (max==b[k])
        {
            if (x<a[k])
            {
                x=a[k];
            }
        }
    }
    printf("%d",x);
    return 0;
}

原文:https://blog.csdn.net/WYTRun/article/details/121542436

输入后的空格去掉

for(i=0;i<n;i++)
 {
   scanf("%d",&a[i]);
}