Hiraeth2496 2022-10-28 21:51 采纳率: 50%
浏览 216

输入一个int型正整数,判断各个位数上的数字之和是否能被7整除

问题遇到的现象和发生背景

输入一个int型正整数,判断各个位数上的数字之和是否能被7整除。两个不同的代码,却有一个相同的错误结果。其他验证数字均能正确判断(至少试过的是这样)

用代码块功能插入代码,请勿粘贴截图

第一个代码:
#include<stdio.h>
main()
{
int x,q;
int i=1;

scanf("%d",&x);
while(!(x>=0&&x<=9))
{
    x=x/10;
    i+=1;
}
q=i;

int number[i];

i=0;
if (x<10){
    if (x==7){
        printf("yes");
    }else{
        printf("no");
    }
}else{
    for (i=1;i<q-1;i++){
        number[i]=x%(10*(i+1))/(10*(i));
    }

    int sum=0;
    i=1;

    for (i=1;i<q-1;i++){
        sum+=number[i];
    }

    int usum=sum/7;
    if (usum*7==sum){
        printf("yes");
    }else{
    printf("no");
    }
}

return 0;
}

第二个代码:
#include<stdio.h>
main()
{
int x,i,t,sum=0;
int a[100]={0};
scanf("%d",&x);
for(i=0;i<100;i++)
{
if(x>10)
{
a[i]=x%10;
x/=10;
t++;
}
else
{
i=0;
for(i=0;i<=t;i++)
sum+=a[i];
break;
}

}
if(sum%7==0)
printf("yes");
else
printf("no");
return 0;
}

运行结果及报错内容

两个均是输入588,输出no。编译无误。

我的解答思路和尝试过的方法

累了,说不出来~ 。 ~

我想要达到的结果

让588输出no

  • 写回答

1条回答 默认 最新

  • 四海一叶秋 2022-10-28 22:01
    关注
    #include<stdio.h>
    int main()
    {
        int x,sum=0;
        scanf("%d", &x);
        while (x)
        {
            sum += x % 10;
            x /= 10;
        }
        if (sum % 7 == 0)
            printf("yes");
        else
            printf("no");
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月28日

悬赏问题

  • ¥15 grbl为何无法移动到比复位坐标更小的坐标?
  • ¥60 怎样隐藏win7系统进程?
  • ¥15 CBF预处理数据归一化的时候报错了如下图
  • ¥15 qt 转 msvc 后 Opencv 始终打不开视频!
  • ¥15 yolo v5中labelimg的作用
  • ¥15 国赛c题2021,没有理解这一串代码的意思,这样报错该怎么解决(语言-matlab)
  • ¥15 一、执行完中断程序后如何继续运行,二、中断结束后如何跳过中断触发前的点位(LOW点不要继续运行,可以运行UP点)(关键词-程序运行)
  • ¥15 if为什么跳过if 直接执行else 中文
  • ¥200 解决登录微信老版本限制封号问题
  • ¥15 mysql中时间处理问题