為什么終端是1是從1到1的水仙花數(shù)呢 #include #include int main(
為什么終端是1是從1到1的水仙花數(shù)呢
#include<stdio.h>
#include<math.h>
int main()
{
int a,num_init,num;
?
printf("請(qǐng)輸入水仙花數(shù)產(chǎn)生的下限值:");
num_init = scanf(" %d", &num_init);
printf("請(qǐng)輸入水仙花數(shù)產(chǎn)生的上限值:");
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是一個(gè)%d到%d之間的水仙花數(shù)\n", num, num_init, a);
?
? ? ? ? }
? ? ? ? num++;
? ? } while (num <a);
?
?
?
return 0;
}
為什么終端是1是從1到1的水仙花數(shù)呢
根據(jù)你提供的代碼,終端輸出從1到1的水仙花數(shù)是因?yàn)樵谳斎肷舷拗禃r(shí),你使用了錯(cuò)誤的變量名。在第6行,你將輸入的上限值存儲(chǔ)在變量"a"中,但在第9行的do-while循環(huán)中,你使用了錯(cuò)誤的變量名"a"作為循環(huán)條件。這導(dǎo)致循環(huán)只執(zhí)行一次,即從num_init到num_init+1,因此終端只輸出了一個(gè)水仙花數(shù)。
要解決這個(gè)問(wèn)題,你需要在第9行將循環(huán)條件改為"num <= a",這樣循環(huán)將在num達(dá)到上限值a時(shí)終止,正確地輸出從num_init到a之間的所有水仙花數(shù)。以下是修改后的代碼:
```c
#include<stdio.h>
#include<math.h>
int main()
{
? ? int a, num_init, num;
?
? ? printf("請(qǐng)輸入水仙花數(shù)產(chǎn)生的下限值:");
? ? scanf("%d", &num_init);
? ? printf("請(qǐng)輸入水仙花數(shù)產(chǎn)生的上限值:");
? ? 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是一個(gè)%d到%d之間的水仙花數(shù)\n", num, num_init, a);
? ? ? ? }
? ? ? ? num++;
? ? } while (num <= a);
?
? ? return 0;
}
```
請(qǐng)注意,我還修正了第7行和第8行的輸入語(yǔ)句,以確保正確地讀取用戶輸入的下限值和上限值。