应该是因为这个数乘以2,3,4,5,6,7,8,9之后乘积的各数位之和的存储变量s的初始化的位置不对,因为在计算每个乘积的数位之和之前,其和都要初始化为0,所以把它放到第20行for循环里面,第22行while循环前即可,修改如下:
参考链接:
#include <stdio.h>
int main(void){
int n;
scanf("%d",&n);
int j;
for(j=1;j<=n;j++){
int x;
// https://blog.csdn.net/weixin_53338919/article/details/116592736
scanf("%d",&x);
int sum=0,a=x;
while(a>0){
int b=a%10;
sum+=b;
a/=10;
}
int i,y=1,s;
for(i=2;i<=9;i++){
int t=i*x;
s=0;
while(t>0){
int d=t%10;
s+=d;
t/=10;
}
if(s!=sum){
y=0;
break;
}
}
if(y==0){
printf("NO\n");
}else {
printf("%d\n",sum);
}
}
return 0;
}