【发布时间】:2016-10-20 09:02:54
【问题描述】:
我是一个学习 C 语言的初学者,我有一个任务要求我编写一个程序来确定用户输入的数据作为三角形边是否有意义。
如果是,我要判断三角形的类型,如果不是,就应该写出“它不是三角形”这样的输出。
为此我必须使用while 循环,并且不允许使用do while。
这就是我编写的代码。我正在使用 DevC++ 程序。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a;
int b;
int c;
printf("Enter the first side:\n");
scanf("%d", &a);
printf("Enter the second side:\n");
scanf("%d", &b);
printf("Enter the third side:\n");
scanf("%d", &c);
while ((a > 0) && (b > 0) && (c > 0))
{
if (((a + b) > c) && ((a + c) > b) && ((b + c) > a))
{
if ((a == b) && (b == c))
{
printf("That is an EQUILATERAL triangle\n");
break;
}
if ((a == b) || (b == c) || (a == c))
{
printf("That is an ISOSCELES triangle\n");
break;
}
else
{
printf("That is a SCALENE triangle\n");
break;
}
}
else
{
printf("That is not a TRIANGLE.\n");
break;
}
return 0;
}
现在我遇到的问题是;每次我们决定它是否是三角形时,我被要求让程序重新启动(重复),但我不知道如何。我写的这个“中断”声明不起作用,我认为没有必要对吗?当我检查我的代码时也会出现这个错误
D:\Homework1.c [Error] expected declaration or statement at end of input
你能帮帮我吗?
Edit1:简单地说,循环应该总是重复,除非输入数字不是 0 或 (-)。因此,如果它们不是 0 或负数,用户将始终能够重新输入值(实际上这是循环的主要条件) Edit2:我纠正了丢失的 } 和 ((b + c) > c) 错误,谢谢大家。
【问题讨论】:
-
你的任务是让它重复,你不能使用循环吗? ... 叹息,另一位有白痴任务的老师。使用 goto。
-
这和 C++ 有什么关系?在某些情况下,使用两种语言进行标记是有意义的(其中一种是询问“比较和对比”类型的问题)。这不是其中之一。
-
@deviantfan:他们被允许使用循环:只是
while(...) { .... },而不是do { ... } while(...);循环。 -
while (true) { /* 做任何你想做的事 */ }
-
但在继续之前,您需要学习的第一件事是正确缩进您的代码。通过这样做,您应该会发现您缺少右括号。
标签: c loops while-loop dev-c++