老师和学校都有病。模特学编程干嘛?偏偏要考C语言二级。帮忙啊!
#include<stdio.h>
void main()
{
int i,j,k,n;
n=i*100+j*10+k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("水仙花数为:%d",n);
}
出不来结果。
老师和学校都有病。模特学编程干嘛?偏偏要考C语言二级。帮忙啊!
#include<stdio.h>
void main()
{
int i,j,k,n;
n=i*100+j*10+k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("水仙花数为:%d",n);
}
出不来结果。
问题中的代码的错误在于,n
在赋值的时候,i、j、k都没有初始化,n
的值这时就没有道理;其次,n
在被赋值后,就再也没有被修改过……看起来题主是把i、j、k当指针来用了啊XD
解决方案:
在最后的一层for
循环中:
for(k=0;k<10;k++)
if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("水仙花数为:%d",n);
改成这样:
for(k=0;k<10;k++)
{
n = (i*i*i)+(j*j*j)+(k*k*k);
if((i*100+j*10+k)==n)
printf("水仙花数为:%d",n);
}
实际上就是把n值在每次寻找水仙花数的时候更新一下~
#include<stdio.h>
void main()
{
int i,j,k,n;
for(i=1;i<10;i++){
for(j=0;j<10;j++){
for(k=0;k<10;k++){
if(i * 100 + j * 10 + k == i*i*i + j*j*j + k*k*k){
n = i*100 + j*10 + k;
printf("水仙花数为:%d",n);
}
}
}
}
}
1 回答1.4k 阅读
1 回答1.1k 阅读
1 回答925 阅读
873 阅读
814 阅读
734 阅读
678 阅读