[求助]用C语言编写求梯形面积公式的简易计算器

er,我刚学C语言,今天写了这么一段代码:
#include <stdio.h>
void main(void)
{
int a,b,h,area;
int get_area(a,b,h);
printf("请输入梯形的上底:\n");
scanf("%f",&a);
printf("请输入梯形的下底:\n");
scanf("%f",&b);
printf("请输入梯形的高:\n");
scanf("%f,&h");
area=get_area(a,b,h);
printf("梯形的面积为%f\n",area);

}

int get_area(int a,int b,int h)
{
return 1/2*(a+b)*h;
}

编译、连接的时候都没问题,但是在运行的时候,在显示了“请输入梯形的上底:”这句话,然后我随便输入了一个数字然后回车之后,就弹出了这样一个框框:
Debug Error!
Program:(我程序保存的地址)
Runtime Error
(Press retry to debugthe application)

哪儿错了呢?
我初步认为是,

printf("请输入梯形的上底:\n");
scanf("%f",&a);

printf("请输入梯形的下底:\n");
scanf("%f",&b);
这两段(以及下面的那一段)之间应该需要加入点什么以便使我回车之后后面的内容还能运行。

不知道究竟是不是这样呢?请各位大虾不吝赐教!

现在已经改好了,请看更改的地方:

#include <stdio.h>
void main(void)
{
float a,b,h,area;/*应该声明为float*/
float get_area(float,float,float);/*函数的正确声明法,还有形参和实参不能同名*/
printf("请输入梯形的上底:\n");
scanf("%f",&a);
printf("请输入梯形的下底:\n");
scanf("%f",&b);
printf("请输入梯形的高:\n");
scanf("%f",&h);/*有改动 */
area=get_area(a,b,h);
printf("梯形的面积为%f\n",area);

}

float get_area(float a_x,float b_x,float h_x)
{
return 1/2.0*(a_x+b_x)*h_x;/*把2改成2.0,因为1/2=0,1/2.0=0.5 ,这是C的想法*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-10
#include <stdio.h>
void main()
{
float a,b,h;
float area;
printf("请输入梯形的上底下底高:\n");
scanf("%f%f%f",&a,&b,&h);

float get_area(float a,float b, float h);
area=get_area(a,b,h);
printf("梯形的面积为%f\n",area);

}

float get_area(float a,float b,float h)
{
return 1.0/2*(a+b)*h;
}

给你改好了,首先你return 语句中不能写1/2应写成1.0/2;a,b,h,定义为int 还可以,但area最好定义为float,return返回值是float型,否则丢精度,最好全用浮点型;输a,b,h的时候不要那样输入,没时间帮你看为什么那么输入不行,反正我平常不那么用
第2个回答  2019-04-03
#include
#include
struct
eoe
{
file*
fp;
char
token;
eoe()
{
fp
=
stdin;
}
eoe(file*
p)
{
fp
=
p;
}
inline
void
gettoken();
inline
int
exp();
inline
int
term();
inline
int
factor();
inline
int
result();
};
void
eoe::gettoken()
{
while
(1)
{
token
=
fgetc(fp);
if
(token
==
eof
||
token
==
';'
||
token
==
'=')
{
token
=
0;
break;
}
else
if
(!isspace(token))
break;
}
}
int
eoe::exp()
{
int
t
=
term();
while
(1)
{
if
(token
==
'+')
gettoken(),
t
+=
term();
else
if
(token
==
'-')
gettoken(),
t
-=
term();
else
break;
}
return
t;
}
int
eoe::term()
{
int
t
=
factor();
while
(1)
{
if
(token
==
'*')
gettoken(),
t
*=
term();
else
if
(token
==
'/')
gettoken(),
t
/=
term();
else
break;
}
return
t;
}
int
eoe::factor()
{
int
t;
if
(token
==
'(')
gettoken(),
t
=
exp(),
gettoken();
else
if
(isdigit(token))
ungetc(token,
fp),
fscanf(fp,
"%d",
&t),
gettoken();
return
t;
}
int
eoe::result()
{
int
t;
gettoken();
t
=
exp();
return
t;
}
int
main()
{
eoe
e;
printf("%d\n",
e.result());
return
0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网