输入一个正整数 repeat (0
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;
}
好像没问题。
你的n如果是10^100范围那么建议你用数组存储,double也存不了
然后你的写法中如果当前值为0会出错