执行while循环时出现问题

时间:2019-10-04 18:53:44

标签: c

因此,最近,一个用户评论了我在这里所做的一个问题,告诉我,不建议在main()函数内部调用main(),甚至在c ++中都不是有效的,他告诉我更好的方法是将我的所有代码包装在while(true)循环中,然后break,或者在必要时使用continue

我试图将其应用到我创建的代码中,但是我认为我不明白应该怎么做,因为遇到了问题。

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

int main(){

    float a, b, c;
    char d = 'r';

    printf("Hello!\n");

    while(d == 'r'){

    printf("Enter the first side of your triangle: ");
    scanf("%f", &a);
    printf("\n Now, the second one: ");
    scanf("%f", &b);
    printf("\n Now, the third and last one: ");
    scanf("%f", &c);

    if(a > (b+c) || b > (a+c) || c > (a+b)){
        printf("Impossible! This can't be a triangle!");

    }

    if(a == b && a == c){
        printf("\nYou've got a 3 equal sides triangle!\n");
    }
    else{
        if((a == b && a != c) || (b == c && b != a) || (c == a && c !=b)){
            printf("\nYou've got a 2 equal sides triangle!\n");
        }
        else{
            printf("\nYou've got a 3 different sides triangle!\n");
        }

    }


    repeat();


    }

    system("pause");

}

int repeat(){
    char d;
    printf("Do you wanna repeat?\nPress 'r' if you want, press any other key to quit: ");
    scanf(" %c", &d);
}

无论用户是否按下“ r”或其他任何键,循环始终会发生

我做错了吗?

1 个答案:

答案 0 :(得分:2)

d函数中的

repeat()d中的main()没有共同之处。它们是两个不同的,不相关的变量。因此,当您更改其中一个时,另一个完全不变。

您可以返回该变量:

int main()
{
    char d = 'r';
    ...
    while (d == 'r')
    {
        ...
        d = repeat();
    }
}

char repeat()
{
    char d;
    printf("Do you wanna repeat?\nPress 'r' if you want, press any other key to quit: ");
    scanf(" %c", &d);
    return d;
}

或使用输出参数:

int main()
{
    char d = 'r';
    ...
    while (d == 'r')
    {
        ...
        repeat(&d);
    }
}

void repeat(char* d)
{
    printf("Do you wanna repeat?\nPress 'r' if you want, press any other key to quit: ");
    scanf(" %c", d);
}