c語言追求的是程序執行時間效率,題目給出立方之後是四位數,可以人為確定年齡範圍在10-21歲,至於為什麽不確定六位數再精確壹點,個人覺得沒什麽必要。這個編程的核心在於如何分辨這10個數字不同,我定義了壹個函數,用數組加循環判斷。以下是具體代碼。
#include?<stdio.h>#include<stdlib.h>
#include<math.h>
int?same(int?a[10]);//判斷10個數是否相等,相互不相等返回1
int?many(int?a);//判斷壹個整型數是幾位數
main()
{
int?a[10]?,i?,j?,s?,l;?//a儲存10個數字的數組,i年齡循環變量,j將數字存入數組,s儲存四位數,l儲存六位數
for(i=10;i<22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位數則退出當次循環
for(j=0;j<4;j++){
a[j]=s%10;
s=s/10;
}//存入四位數
for(j=4;j<10;j++){
a[j]=l%10;
l=l/10;
}//存入六位數
if(same(a))
printf("age=%d\n",i);//輸出
}
system("pause");
}
int?many(int?a){
int?i=0;
while(a>0){
a=a/10;
i++;
}
return?i;
}
int?same(int?a[10]){
int?i,j,flag=1;
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]==a[j])
flag=0;
}
}
return?flag;
}