已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
3天前关闭。
Improve this question
我正在用C语言学习编程。我写了一个switch
语句来求矩形、正方形和三角形的面积。你能告诉我哪里出错了吗?
#include <stdio.h>
int AreaOfSquare(int a)
float AreaOfrectangle(float b, float h)
float AreaOftriangle(float a, float b)
int NoneOfthose()
main(void)
{
int a;
scanf("%d", &a);
switch(a)
{
case 1:
AreaOfSquare(5);
break;
case 2:
AreaOfrectangle(6, 5);
break;
case 3:
AreaOftriangle(7, 8);
break;
default:
NoneOfthose();
printf("Please enter a Valid choice");
}
return 0;
}
int AreaOfSquare(int a)
{
int area_s;
area_s = a * a;
printf("Area of Square is = %d\n", area_s);
}
float AreaOfrectangle(float b, float h)
{
float area_r;
area_r = (b * h) / 2;
printf("Area of Square is = %f\n", area_r);
}
float AreaOftriangle(float a, float b)
{
float area_t;
area_t = a * b;
printf("Area of triangle is = %f\n" area_t);
}
int NoneOfthose(void)
{
printf(" There is nothing to calculate");
}
我对用于计算面积的每个函数声明的数据类型做了一些更正。
1条答案
按热度按时间mwecs4sa1#
1.有一些语法错误。函数声明后缺少
;
,area_t前缺少,
。这表明您从未编译过与我们共享的代码(在请求帮助之前,最起码要编译)。通过将main()
移到文件底部消除了原型。main()
应该返回一个int
。1.在
AreaOfrectangle()
中,你的消息是Square。像这样复制代码,顺便说一句,是一个重构代码的提示。面积函数之间的唯一区别是参数的数量,用于计算面积的公式是形状的名称。例如:1.检查
scanf()
返回值,否则您可能正在对未初始化的数据进行操作。1.所有的区域函数都声明为返回一些东西,但实际上并没有,所以将返回类型改为
void
(但请参见上面的第3点)。1.(未修复)考虑引入
enum
来为菜单选项分配常量,即:然后你可以在case语句中使用那些常量,这样可读性会更强。
1.(未修复)打印浮点数时,请考虑使用
%g
而不是%f
。它将删除尾随零。1.(未修复)请考虑使用
double
而不是float
。1.(未修复)提示“请输入有效的选择”意味着您希望循环运行此操作,直到做出有效的选择。