当n=50101132的时候。从你的程序看出t数组是存储每位的数字,而a数组是存储每个数字出现的次数,没有输出只能说明后面的数字都不符合要求。
至于有答友回答的溢出问题,在你的代码里是不存在的。
long最大值2147483647(至少和int一样大,这是我的机器的结果,一般说你的机器也是的。),所以只能说你的逻辑出错了。
下面上注释,自己看n=50101132的时候,为什么正确输出了。
而且你图片里的第八位是:不同数字出现的个数和第八位比较,你的a[7]和t[7]被你设置成了5,所以就是死的了,第八位你要求出来,你强制性认为有5个不同的数字,没有输出,说明没有符合要求的结果。
for (n= 50101132;n<59999999;n++) {
t[0]=n/1%10; //2
t[1]=n/10%10; //3
t[2]=n/100%10; //1
t[3]=n/1000%10; //1
t[4]=n/10000%10; //0
t[5]=n/100000%10; //1
t[6] = n / 1000000 % 10; //0
a[7] = 5;
t[7] = 5;
for (i = 0; i < 8; i++) {
switch (t[i]) {
case 0: a[0]++; break; //2
case 1: a[1]++; break; //3
case 2: a[2]++; break; //1
case 3: a[3]++; break; //1
case 4: a[4]++; break; //0
case 5: a[5]++; break; //1
case 6: a[6]++; break; //0
default: break;
}
}