土冒
晕,写错了一个函数,导致结果错误,改一下: #include<stdio.h>
void sort(int a[],int l) {int i,j,k,t; for(i=0;i<l-1;i++) {k=i; for(j=k+1;j<l;j++) if(a[k]>a[j]) k=j; if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;} } } main() {int x,i,a[10],j; long m,n; x=10; while(1) { m=x*x*x; n=x*x*x*x; j=0; while(m) {a[j++]=m%10; m=m/10; } while(n) {a[j++]=n%10; n=n/10; } if(j>=10) {sort(a,10); for(i=0;i<10;i++) if(a[i]!=i) break; if(i>=10) break; } x++; } printf("The age =%d \n",x); getch(); }
这样比较好理解!
[此贴子已经被作者于2005-4-17 15:23:01编辑过]
楼中两位程序尚待改进
main() { long a,b,c; int T[10]={0},flag,i;
for(a=11;a<32;a++) /*a为年龄,由题可知10<a<32 */ { b=a*a*a; c=b*a; flag=1;
while(b) { T[b%10]=1; b/=10; } while(c) { T[c%10]=1; c/=10; } for(i=0;i<10;i++) { if(T[i]==0) { flag=0; } T[i]=0; } if(flag==1)printf("The age = %d \n",a); }
getch();
}