因此,最近,一个用户评论了我在这里所做的一个问题,告诉我,不建议在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”或其他任何键,循环始终会发生
我做错了吗?
答案 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);
}