变强了,也秃了 2022-07-22 22:32 采纳率: 66.7%
浏览 58
已结题

OJ-1046: 求整数的位数以及各位数之和

求整数的位数以及各位数之和

题目描述
输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入一个整数,输出它的位数以及各位数之和。

样例输入
3
123456 20000 -1

样例输出
number=6,sum=21.
number=5,sum=2.
number=1,sum=1.

判断系统提示我只对了一半,格式条件都是对的,后来我考虑会不会是用long long int,但是在输入-1时,输出结果会是错误的
这是我的代码:

#include <stdio.h>

int main()
{
    int s[1000] = { 0 };
    int repeat;
    do {
        scanf("%d", &repeat);
    } while (repeat <= 0 || repeat >= 10);
    for (int i = 0; i < repeat; i++)
        scanf("%d", &s[i]);
    for(int j=0;j<repeat;j++)
    {
        int num = 0, sum = 0;
        if (s[j] < 0)
            s[j] = -s[j];
        while (s[j] != 0)
        {
            num++;
            sum += s[j] % 10;
            s[j] /= 10;
        }
        printf("number=%d,sum=%d.\n", num, sum);
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • WangMing_GZ 2022-07-22 23:26
    关注

    用这个来就行,你的代码不太对。

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
     
    int main()
    {
        int num = 0;
        int sum = 0;
        int val = 0;
        int n = 0;
    
        printf("Please input a number[>0]:");
        scanf("%d",&n);
        if(n < 0)
        {
            n =  abs(n);
            printf("n: %d\n",n);
        }
    
        while(n > 0)
        {
            num++;
            sum += (n % 10);
            //printf("sum: %d\n",sum);
            n /= 10;
        }
        printf("first val: %d\n",val);
        printf("number=%d,sum=%d.\n", num, sum);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 已采纳回答 7月31日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题