问题遇到的现象和发生背景
输入一个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