我必须通过从用户那里获得输入来乘以数字,当他输入'n'时它将产生答案。
例如(2 * 3 * 2 = 12)。但是我设法编写代码来获取两个输入但是找不到从用户那里获取多个输入并产生总答案的方法。这是代码;
void main (void)
{
float f1,f2;
float total;
int status1,status2;
printf("Enter first number to multiply:'n' to quit.\n ");
status1=scanf("%f",&f1);
printf("Enter another number to be multiply:'n' to quit.\n ");
status2=scanf("%f",&f2);
while (status1==1 && status2==1)
{
total=f1*f2;
status1=scanf("%1.0f",&f1);
status2=scanf("%1.0f",&f2);
}
printf("Multiplition Total = %1.0f",total);
getch();
}
答案 0 :(得分:1)
您可以使用while循环,如下所示。
float prod = 1, f;
printf( "Enter the numbers, n to stop.\n" );
while( scanf( "%f", &f ) )
prod *= f;
printf( "product = %f\n", prod );
答案 1 :(得分:1)
测试:
#include <stdio.h>
int main()
{
int total = 1, factor = 1, success;
do
{
total *= factor;
printf("Enter integer number to multiply or 'n' to quit: ");
success = scanf("%d", &factor);
}
while (success);
printf("Multiplication Total = %d\n", total);
return 0;
}
当你说你用C开始你的冒险时的一条建议:
除非您有其他特定原因,否则请使用 double ,而不是浮动。
但是,在你的问题中,你要求数字(整数)乘法,所以int就足够了。如果可以避免浮点数,请避免使用它们。它们比整数复杂得多,如果你不小心使用它们会让你遇到更严重的问题
您可以参考What Every Computer Scientist Should Know About Floating-Point Arithmetic。
答案 2 :(得分:0)
未测试:
float f, p = 1;
printf ("Enter a number: ");
fflush (stdout);
while (scanf("%f", &f) != EOF)
{
p *= f;
printf ("Enter another number: ");
fflush (stdout);
}
printf ("Product: %f\n", p);
答案 3 :(得分:0)
这可以满足您的需要并处理0,1或无限数量的输入:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
float f1;
float total = 0;
printf("Enter number: ");
if (scanf("%f",&total))
{
for (;;)
{
printf("Enter number: ");
if (!scanf("%f", &f1))
{
break;
}
total *= f1;
}
}
printf("Multiplication Total = %f\n",total);
getch();
return 0;
}
在输入值时保持运行总计但在第一个无效输入时停止,而不仅仅是在输入n
时。