qqcmm1015 2022-08-27 20:08 采纳率: 61.8%
浏览 81
已结题

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

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

#include<stdio.h>
#include<math.h>
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;
}

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-08-27 20:33
    关注

    题目要求:输入一个整数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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line