用C++ 现在要求输出所有在m和n范围内的水仙花数。

2024年11月20日 18:48
有3个网友回答
网友(1):

如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;

如果给定的范围内不存在水仙花数,则输出no;


输出格式有要求,注意如果存在,最后不要多一个空格


再给一份通过的

#include 

bool flag[1000];

int main()
{
int sum = 100;
// 初始化
for(int i=1; i<10; i++){
for (int j = 0; j< 10; j++){
for(int k=0; k<10; k++){
if(sum==(i*i*i+j*j*j+k*k*k)){
flag[sum] = true;

sum ++;
}
}

int m,n;
while(scanf("%d%d", &m, &n)==2){
int i=m;
for(; i<=n; i++){
if(flag[i]){
printf("%d", i);
break;
}
}
if(i==n+1){
// 没找到
printf("no\n");
}else{
i++;
for(; i<=n; i++){
if(flag[i]){
printf(" %d", i);
}
}
printf("\n");
}
}
return 0;
}

网友(2):

for循环的条件判断应放在中间:for(i=0;m<=n,100<=m&&m<=n&&n<=999;m++)

网友(3):

你的程序输出是正确的啊!
153 370 371 407