2014-10-27 333 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; 

,你应该设置去。