使用循环运行程序n次

时间:2019-05-03 01:34:17

标签: c loops for-loop while-loop

我是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;
}

2 个答案:

答案 0 :(得分:0)

for(i = 0; i

答案 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的信息。