我是C编程语言的新手。我试图将代码运行N次以下(基于“输入迭代次数”的用户输入)。我正在尝试使用for循环(也可以使用while循环进行尝试)来完成此操作,但是没有成功。
每当我运行以下代码时,我的终端就会不断重复“输入两个浮点数:”。我必须关闭终端,然后重新打开才能重试。问题与我的for循环有关吗?我将for循环解释为:“ a = 0;如果a> 0;则递增a”。有没有一种方法可以为“ if a> 0”设置限制,还是应该使用while循环?如果用户输入“ 3”表示迭代次数,那么我希望程序会询问3次“输入两个浮点数”(带有答案)。
float sum (float m, float n){
return m+n;}
int main() {
float x, y;
int a;
printf("Enter amount of iterations: ");
scanf("%d", &a);
for (int i; i < 0; i++) {
printf("Enter two float numbers: ");
scanf("%f %f", &x, &y);
float su = sum(x,y);
printf("%f and %f = ", x, y);
printf("%f\n", su);}
return 0;}
正确答案出于可读性考虑进行了格式化:
float sum(float m, float n)
{
return m + n;
}
int main()
{
float x, y;
int a;
printf("Enter amount of iterations: ");
scanf("%d", &a);
for (int i = 0; i < a; i++)
{
printf("Enter two float numbers: ");
scanf("%f %f", &x, &y);
float su = sum(x, y);
printf("%f and %f = ", x, y);
printf("%f\n", su);
}
return 0;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
这应该表现得更像您想要的:
#include <stdio.h>
static float sum(float m, float n)
{
return m + n;
}
int main(void)
{
float x, y;
int a;
printf("Enter amount of iterations: ");
if (scanf("%d", &a) != 1)
{
fprintf(stderr, "Invalid input for iterations\n");
return 1;
}
for (int i = 0; i < a; i++)
{
printf("Enter two float numbers: ");
if (scanf("%f %f", &x, &y) != 2)
{
fprintf(stderr, "Failed to read to floating point numbers\n");
return 1;
}
float su = sum(x, y);
printf("%f and %f = ", x, y);
printf("%f\n", su);
}
return 0;
}
请注意,它会检查输入操作是否成功,并报告标准错误(stderr
)中的错误。该代码使用标准的C for
循环从0到最大计数进行计数-这是惯用的C。您应该习惯使用它。
正如我在comment中所指出的那样,a
循环中的for
与代码中先前声明并由输入设置的a
不同,并且与之无关操作。 for循环中的a
未初始化;您无法判断循环将执行多少次。一个好的编译器应该警告您有关重新定义或隐藏a
的信息。