【发布时间】:2022-11-25 21:51:23
【问题描述】:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
int j;
int base;
int height;
int side;
int up;
int down;
int output[1001];
for (i = 0; i < 1000; i++)
{
char type = getchar();
if(type == 'P')
{
scanf("%d", &side);
output[i] = side * side;
}
else if (type == 'S')
{
scanf("%d %d", &base, &height);
output[i] = 0.5 * base * height;
}
else if (type == 'T')
{
scanf("%d %d %d", &up, &down, &height);
output[i] = height * (up + down) / 2;
}
else if(type == '0')
{
break;
}
}
for(j = 0; j < i; j++)
{
{
printf("%d\n", output[j]);
}
}
return 0;
}
我想要的是在我输入“0”之后, 该程序停止询问输入接着给出输出.总的来说它的工作,但有一个错误,在每个输出中,总是有 1 行“0”。
示例输入:
P 5
S 10 10
T 10 10 10
0
我想要的输出:
25
50
100
我现在使用此代码的输出:
25
0
50
0
100
0
我猜这是
else if(type == '0')
{
break;
}
犯了这个错误,但我不确定,我不知道如何解决这个问题
【问题讨论】:
-
您是否尝试过在调试器中逐行运行代码,同时监视控制流和所有变量的值,以确定您的程序在哪一行停止按预期运行?如果你没有尝试过这个,那么你可能想读这个:What is a debugger and how can it help me diagnose problems?你可能还想读这个:How to debug small programs?
-
旁注:我建议您使用
switch语句,而不是在同一变量上使用if...else if链。但是,这不是您遇到问题的原因。
标签: c