欢迎光临散文网 会员登陆 & 注册

为什么终端是1是从1到1的水仙花数呢 #include #include int main(

2023-08-20 13:20 作者:酸奶公园  | 我要投稿

为什么终端是1是从1到1的水仙花数呢

#include<stdio.h>

#include<math.h>


int main()

{


int a,num_init,num;

 

printf("请输入水仙花数产生的下限值:");

num_init = scanf(" %d", &num_init);

printf("请输入水仙花数产生的上限值:");

a = scanf("%d",&a);

num = num_init;

 

 

    do {

    int num_th = num % 10;

    int num_sec = (num / 10) % 10;

    int num_fir = num / 100;

 

        if (num == pow(num_th, 3) + pow(num_sec, 3) + pow(num_fir, 3))

        {

 

        printf("%d是一个%d到%d之间的水仙花数\n", num, num_init, a);

 

        }

        num++;

    } while (num <a);

 

 

 

return 0;

}


为什么终端是1是从1到1的水仙花数呢

根据你提供的代码,终端输出从1到1的水仙花数是因为在输入上限值时,你使用了错误的变量名。在第6行,你将输入的上限值存储在变量"a"中,但在第9行的do-while循环中,你使用了错误的变量名"a"作为循环条件。这导致循环只执行一次,即从num_init到num_init+1,因此终端只输出了一个水仙花数。


要解决这个问题,你需要在第9行将循环条件改为"num <= a",这样循环将在num达到上限值a时终止,正确地输出从num_init到a之间的所有水仙花数。以下是修改后的代码:


```c

#include<stdio.h>

#include<math.h>


int main()

{

    int a, num_init, num;

 

    printf("请输入水仙花数产生的下限值:");

    scanf("%d", &num_init);

    printf("请输入水仙花数产生的上限值:");

    scanf("%d", &a);

    num = num_init;

 

    do {

        int num_th = num % 10;

        int num_sec = (num / 10) % 10;

        int num_fir = num / 100;

 

        if (num == pow(num_th, 3) + pow(num_sec, 3) + pow(num_fir, 3))

        {

            printf("%d是一个%d到%d之间的水仙花数\n", num, num_init, a);

        }

        num++;

    } while (num <= a);

 

    return 0;

}

```


请注意,我还修正了第7行和第8行的输入语句,以确保正确地读取用户输入的下限值和上限值。


为什么终端是1是从1到1的水仙花数呢 #include #include int main(的评论 (共 条)

分享到微博请遵守国家法律