#include<stdio.h>
#include<math.h>
int main()
{
int m,n,k,s=0,g=0,i,flag=0;
scanf("%d%d",&m,&n);
i=(int)pow(10,n-1);
n=10*i;
for(;i<n;i++){
k=i;
while(k)
{ if(k%10==m)
{flag=1;break;}
k/=10;
}
if(flag==1){
if(i%m!=0)
{
g++;
s+=i;
}
}
}
printf("%d\n%d\n",g,s);
return 0;
}
运行结果是错的,但是只要把flag=0,写到k=i的前面,又成队的了,这是为什么,难道flag在定义时不能赋值吗?
#include<math.h>
int main()
{
int m,n,k,s=0,g=0,i,flag=0;
scanf("%d%d",&m,&n);
i=(int)pow(10,n-1);
n=10*i;
for(;i<n;i++){
k=i;
while(k)
{ if(k%10==m)
{flag=1;break;}
k/=10;
}
if(flag==1){
if(i%m!=0)
{
g++;
s+=i;
}
}
}
printf("%d\n%d\n",g,s);
return 0;
}
运行结果是错的,但是只要把flag=0,写到k=i的前面,又成队的了,这是为什么,难道flag在定义时不能赋值吗?