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

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日

悬赏问题

  • ¥60 不懂得怎么运行下载来的代码
  • ¥15 CST导出3D模型图为什么和软件显示不一样?
  • ¥15 加热反应炉PLC控制系统设计(相关搜索:梯形图)
  • ¥15 python 用Dorc包报错,我的写法和网上教的是一样的但是它显示无效参数,是什么问题
  • ¥15 经过滑动平均后的一维信号还原用什么结构好呢?
  • ¥15 指定IP电脑的访问设置
  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 为什么devc++编译项目会失败啊
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒