求整数的位数以及各位数之和 哪里出错了

输入一个正整数 repeat (0输入一个整数n(n<10^100),输出它的位数以及各位数之和。
3 number=6,sum=21
123456 number=5,sum=2
20000 number=1,sum=1
-1

#include
#include
int main()
{int n,m;
scanf("%d",&n);
double a[10]={0};
int k,p;
double t;
for(int i=0;i<=n-1;i++){
scanf("%lf",&a[i]);
}

for(int j=0;j<=n-1;j++){
if(a[j]<0) a[j]=-a[j];
m=0;
int sum=0;
t=a[j];
for(k=2;a[j]/10>=10;k++){a[j]=a[j]/10;
}
if(t==1){k=1;
}
m=k;
while(t>=10){p=pow(10,k-1);sum=sum+t/p;t=fmod(t,p);k=k-1;
}
printf("number=%d,sum=%.0lf\n",m,sum+t);
}
return 0;
}

题目要求:输入一个整数n(n<10^100) ,double t,a[10] 不够,装不下的。能提供题目的输入输出样例吗?这是用字符处理的写法,供参考:

#include <stdio.h>
#include <ctype.h>
int main()
{
    int  repeat,n,m;
    char ch;
    scanf("%d", &repeat);
    getchar();
    while (repeat--) {
       n = 0; m = 0;
       while ((ch = getchar()) != '\n')
            isdigit(ch) ? m += ch-'0', n++ : NULL;
       printf("number=%d,sum=%d\n",n,m);
    }
    return 0;
}

好像没问题。

img

你的n如果是10^100范围那么建议你用数组存储,double也存不了
然后你的写法中如果当前值为0会出错