算法不对:
1、a[j]会超出,j也要<3;
2、cnt的计算方法不对,你这样的算法,如果4个数不同,cnt=6,而不是4,3个数不同,cnt=5,2个数不同,cnt=4或者3;
3、cnt在循环内要清零,
4、你要计算不同数字的数量,4个数字全部相同,cnt值也应该为1,也就是初值为1;
参考程序
#include<stdio.h>
int main()
{
int y,x,k;
int cnt;
int i,j,n;
scanf("%d %d",&y,&n);
k=y;
int a[4];
while(y>=1&&y<=3000)
{
cnt=1;
a[0]=y/1000;
a[1]=y/100%10;
a[2]=y/10%10;
a[3]=y%10;
if(a[0]!=a[1])
{
cnt++;
}
if(a[0]!=a[2]&a[1]!=a[2])
{
cnt++;
}
if(a[0]!=a[3]&a[1]!=a[3]&a[2]!=a[3])
{
cnt++;
}
if(cnt==n)
{
x=y-k;
printf("年龄=%d 年份=%d",x,y);
break;
}
y++;
}
return 0;
}