这是我编的一个子函数,目的是输入4个数字,然后判断输入的这4个数字里面有没有重复的,如果有就重新输入,直到没有时。输入时如果输入的数超过4个,用%4d可以屏蔽前4个后面的数。 void scan(int x[]) { int a,i,t,j,*p,flag=0; printf("请输入4个不大于10的数字:"); while(1) { if(flag!=0)printf("有数字重复了,请重新输入:"),flag=0; scanf("%4d",&a); /* 用%4d屏蔽前4位数后的数,其实并没有释放,如何释放 */ printf("%d\n",a); /* 检测输入的数据 ,以后要删除掉 */ x[0]=a/1000; /* 将输入的数按数位储存 */ x[1]=(a-x[0]*1000)/100; x[2]=(a-x[0]*1000-x[1]*100)/10; x[3]=a-x[0]*1000-x[1]*100-x[2]*10; p=x; for(i=0;i<4;i++) { t=x[i]; for(j=i+1;j<4;j++) if(t==*(p+j))flag=1; } if(flag==0)break; } }
main() { int a[4]; scan(a); }
我的问题是:输入的一串数给变量A,不管输入的数有没有重复的,只要没有超过了4个就正常运行。如果输入的数超过4个,但没有重复的,也能正常运行。但是如果超过4个并且有重复的,那么第一遍输入时被屏蔽掉的数,会在执行第二次输入时自动赋值给变量A。如何能真正的屏蔽掉4位以后的数,让重复输入时不会自动赋值?