2014-10-27 400 views
0

我想用while循環來分割n數字並打印商。例如,如果用戶輸入n = 3,程序將要求輸入3個數字。假設用戶輸入了2,2和3.程序然後執行以下操作:2/2/3,然後打印答案(即0.3333)。我有一個程序,使用while循環完美地進行加法,除法和乘法運算,但在除法中,它將輸入的所有數字(1/2/2/3)除1。我如何解決它?下面是代碼:while while循環

#include<stdio.h> 
#include<stdlib.h> 
#include<conio.h> 

void main(void) 
{ 
int n, k=0; 
float total=1, number; 
printf("\nEnter the number of elements you want to divide:"); 
scanf("%d",&n); 
printf("Please enter %d numbers one by one: \n",n); 
while(k<n) 
{ 
    scanf("%f",&number); 
    total=number/number; 
    k=k+1; 
} 
printf("Quotient of %d numbers = %f \n",n,total); 
_getch(); 
} 
+0

這一行:float total = 1,應該是float total = 1.0f;首先是因爲1不是浮點數,1.0會默認加倍。 – user3629249 2014-10-27 23:10:03

+0

使用scanf()時總是檢查返回碼(在這種情況下應該是1)以確保實際讀取參數。在第一次調用scanf()之後,應該有一個''作爲format參數的第一個字符,這樣就可以跳過空格(如'\ n')。 – user3629249 2014-10-27 23:12:13

+0

這一行:total = number/number;該代碼將自己分割一個數字,所以很自然,結果將始終爲1.根據您的意見,您希望將每個數字除以前面的數字。你的代碼需要另一個變量'oldNumber'(初始化這個數字爲什麼?),然後執行總數+ = oldNumber/number;如果沒有「+ =」,那麼總價值不是分割操作的總和,而只是最新分割的結果。初始化總數爲1將導致錯誤的結果值,它應該是總= 1.0f; – user3629249 2014-10-27 23:17:44

回答

4

變化

total=number/number; 

if (k==0) 
    total = number; 
else 
    total=total/number; 
+0

它正在工作。謝謝! – tehnininess 2014-10-27 15:50:37

0

開始k=1然後用鼠標右鍵之前while循環放

scanf('%f', &total); 

你可能想包裝該行在if (n!=0)。通過這種方式,循環中沒有if語句,可獲得極小的性能收益!

然後,只需改變

total=number/number; 

total=total/number; 

,你應該設置去。