c语言追求的是程序执行时间效率,题目给出立方之后是四位数,可以人为确定年龄范围在10-21岁,至于为什么不确定六位数再精确一点,个人觉得没什么必要。这个编程的核心在于如何分辨这10个数字不同,我定义了一个函数,用数组加循环判断。以下是具体代码。
#include
#include
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 s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位数则退出当次循环
for(j=0;j a[j]=s%10;
s=s/10;
}//存入四位数
for(j=4;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 for(j=i+1;j if(a[i]==a[j])
flag=0;
}
}
return flag;
}