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

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 在ISIS中什么是IP从地址
  • ¥15 压测时,并发量过高时,响应时间出现尖刺
  • ¥15 关于vmprotect3.8.4虚拟文件一项
  • ¥15 在不用IT调试的情况下怎样能连外网
  • ¥20 C#调用虚拟键盘TabTip.exe
  • ¥15 Qt4代码实现下面的界面
  • ¥15 CCS离散化传递函数与仿真不一致
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确