题目:猜一个每位各不相同的四位数,输入一个数字,A表示与谜底数字相同数字的个数,B表示与谜底数字相同且所处的位置也相同的数字个数。
原始代码:
#include<iostream>
using namespace std;
const int number=3729;
int main()
{
int answer,num,awei[4],nwei[4];
int i,j;
int a=0,b=0;
answer=number;
cout<<"请输入每位各不相同的4位数:"<<endl;
for(i=0;i<4;i++)
{
awei[i]=answer%10;
answer/=10;
}
while(a!=4)
{
cin>>num;
for(i=0;i<4;i++)
{
nwei[i]=num%10;
num/=10;
}
for(i=0,a=0,b=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i==j)
{
if(nwei[i]==awei[j])
a++;
}
else
{
if(nwei[i]==awei[j])
b++;
}
}
}
cout<<"A:"<<a<<'\t'<<"B:"<<b<<endl;
}
system("PAUSE");
return 0;
}
改进后代码:
#include<iostream>
using namespace std;
const int number=3729;
int main()
{
int answer,num,awei[10]={0}; //将数组各元素初始化为0
int a=0,b=0;
answer=number;
cout<<"请输入每位各不相同的4位数:"<<endl;
for(int i=1;i<=4;i++)
{
awei[answer%10]=i; //将对应数组索引位的值改成对应数字所在的位数,比如5476,数字6位于第一位(从右向左),则数组中awei[6]=1
answer/=10;
}
while(a!=4)
{
a=0;
b=0;
cin>>num;
for(int i=1;i<=4;i++)
{
if(awei[num%10])
{
if(awei[num%10]==i)
{
a++;
}
b++;
}
num/=10;
}
cout<<"A:"<<a<<'\t'<<"B:"<<b<<endl;
}
system("PAUSE");
return 0;
}