求助!!C程序错在那?
/*
2012年3月25日12:40:06;
目的:设定一个初始的四位数,输入一个四位数与之比较;
输出是几A几B,A表示数字相同且位置相同的位数总数,B表示表示数字相同但位置不同的位数总数;
*/
#include "stdio.h"
#include "math.h"
int main(void)
{
int answer[4]={2,3,5,2};
int guess;
int a,b,times=0;
int i,j;
printf("please guess:\n");
while(a!=4)
{
a = 0;
b = 0;
times++;
printf("%d ",times);
scanf("%d",&guess);
for (i=3;i>-1;i--)
{
for (j=0;j<4;j++)
{
if (guess/pow(10,i)==answer[j])
{if (i+j==3)
a+=1;
else
b+=1;
}
}
guess = guess-(guess/pow(10,i))*pow(10,i);
}
printf(" %dA%dB\n",a,b);
}
return 0;
}
无论输入什么,为什么在VC++里的输出结果都是0A0B呢?
[解决办法]
感觉你的算法有问题,可能是我没看懂吧
if (guess/pow(10,i)==answer[j]) 强制转换成int if (int (guess/pow(10,i))==answer[j])
这是用输入的数每个位数跟答案对比的吧,但是i=2的时候guess/pow的结果是两位数吧... i=1的时候是三位数
这里应该就出问题了吧
[解决办法]