大佬帮忙看下这段c语言代码有什么问题

2024-11-24 13:51:09
推荐回答(2个)
回答1:

#include "stdio.h"
int main(int argc,char *argv[]){
int y,n,a,b,c,d,e,f,g,h,i,j;
for(y=16;y*y*y*y<100000;y++);//找到y的大概数(^4是6位数)
while(1){
a=(n=y*y*y)%10, b=n/10%10, c=n/100%10, d=n/1000;//4位数的各位
e=(n*=y)%10, f=n/10%10, g=n/100%10, h=n/1000%10, i=n/10000%10, j=n/100000;//6位数的各位
if(a==b || a==c || a==d || a==e || a==f || a==g || a==h || a==i || a==j ||
   b==c || b==d || b==e || b==f || b==g || b==h || b==i || b==j || c==d ||
   c==e || c==f || c==g || c==h || c==i || c==j || d==e || d==f || d==g ||
   d==h || d==i || d==j || e==f || e==g || e==h || e==i || e==j || f==g ||
   f==h || f==i || f==j || g==h || g==i || g==j || h==i || h==j || i==j){//检查这10个数字是否有重复
   y++;//有重复则年龄增1重新检查
   continue;
}
printf("His age is %d.\n",y);//无重复则年龄已找到,接下来输出
printf("%d^3 = %d\n%d^4 = %d\n",y,n/y,y,n);
break;//输出结果后退出循环
}
return 0;
}

运行结果:

没学到数组字符串就只好以上那样了……

回答2:

//你的代码这句有误:if(n0=1,n1=1,n2=1,n3=1,n4=1,n5=1,n6=1,n7=1,n8=1,n9=1)
//--> if(n0==1 && n1==1 && n2==1 && ......)
//不过算法不简洁

#include 
#include 
#include 

int main()
{
int old;
int temp3,temp4;
char s3[4]={'\0'},s4[6]={'\0'};
int n[10]={0};
for(old=11;old<100;old++)
{
temp3=pow(old,3);
temp4=pow(old,4);
if(temp3<1000 || temp3>9999 || temp4<100000 || temp4>999999)
{
continue;
}
sprintf(s3,"%d",temp3);
sprintf(s4,"%d",temp4);
int i;
for(i=0;i<10;i++)
{
n[i]=0;
}
for(i=0;i<4;i++)
{
n[s3[i]-'0']++;
}
for(i=0;i<6;i++)
{
n[s4[i]-'0']++;
}
int yes=1;
for(i=0;i<10;i++)
{
if(n[i]!=1)
{
yes=0;
break;
}
}
if(yes==1)
{
printf("old is %d",old);
break;
}
}
return 0;
}