啊哈c水仙花数更进一步第2题,有错吗
为什么显示有BUG???
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
int a[8],x,i;
scanf("%d",&x);
if (x/1>0 || x/1<=9)
{
a[1]=x/1;
printf("%d",a[1]);
}
else;
if (x/10>0 || x/10<=9)
{
a[1]=x%10;
a[2]=x/10;
i=a[1]+a[2];
printf("%d",i);
}
else;
if (x/100>0 || x/100<=9)
{
a[1]=x%10;
a[2]=x/10%10;
a[3]=x/100;
i=a[1]+a[2]+a[3];
printf("%d",i);
}
else;
if (x/1000>0 || x/1000<=9)
{
a[1]=x%1000%100%10;
a[2]=x/10%100%10;
a[3]=x/100%10;
a[4]=x/1000;
i=a[1]+a[2]+a[3]+a[4];
printf("%d",i);
}
else;
if (x/10000>0 || x/10000<=9)
{
a[1]=x%10000%1000%100%10;
a[2]=x%10000%1000%100/10;
a[3]=x%10000%1000/100;
a[4]=x%10000/1000;
a[5]=x/10000;
i=a[1]+a[2]+a[3]+a[4]+a[5];
printf("%d",i);
}
else;
if (x/100000>0 || x/100000<=9)
{
a[1]=x%100000%10000%1000%100%10;
a[2]=x%100000%10000%1000%100/10;
a[3]=x%100000%10000%1000/100;
a[4]=x%100000%10000/1000;
a[5]=x%100000/10000;
a[6]=x/100000;
i=a[1]+a[2]+a[3]+a[4]+a[5]+a[6];
printf("%d",i);
}
else;
if (x/1000000>0 || x/1000000<=9)
{
a[1]=x%1000000%100000%10000%1000%100%10;
a[2]=x%1000000%100000%10000%1000%100/10;
a[3]=x%1000000%100000%10000%1000/100;
a[4]=x%1000000%100000%10000/1000;
a[5]=x%1000000%100000/10000;
a[6]=x%1000000/100000;
a[7]=x/1000000;
i=a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7];
printf("%d",i);
}
else;
if (x/10000000>0 || x/10000000<=9)
{
a[1]=x%10000000%1000000%100000%10000%1000%100%10;
a[2]=x%10000000%1000000%100000%10000%1000%100/10;
a[3]=x%10000000%1000000%100000%10000%1000/100;
a[4]=x%10000000%1000000%100000%10000/1000;
a[5]=x%10000000%1000000%100000/10000;
a[6]=x%10000000%1000000/100000;
a[7]=x%10000000/1000000;
a[8]=x/10000000;
i=a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8];
printf("%d",i);
}
system("pause");
return 0;
}
最佳答案
你这个是求水仙花数?
程序完全不对啊(只是没有语法错而已)
另外你程序中的
else; //这个分号有问题的,加了以后逻辑上就不是你要求的了
最后,这个完全可以用循环做,加这个多个判断没必要的
还有一个大BUG,C的下标是从0开始的(基础)int a[8]只能用a[0]到a[7]你的 a[8]=x/10000000; //下标溢出,程序可能崩溃的
其他回答
暂无其它回答!