C语言switch语句求图形面积代码错误排查请求
代码错误排查与修复
以下是你代码中存在的问题及对应的修复方案:
函数缺少返回值
所有声明了非void返回类型的函数(AreaOfSquare、AreaOfrectangle、AreaOftriangle、NoneOfthose)都没有返回语句。C语言要求这类函数必须返回对应类型的值,否则会触发未定义行为。- 修复:如果函数仅用于输出结果不需要返回值,将返回类型改为
void;若需返回计算结果,添加return语句返回对应值。
- 修复:如果函数仅用于输出结果不需要返回值,将返回类型改为
矩形面积公式错误
AreaOfrectangle函数中使用(b * h) / 2,这是三角形的面积公式,矩形面积应为b * h,无需除以2。三角形面积公式错误
AreaOftriangle函数中使用a * b,正确的三角形面积公式应为(a * b) / 2(假设参数a为底、b为高)。打印文本与功能不符
AreaOfrectangle函数的printf语句输出"Area of Square is = %f\n",应改为"Area of Rectangle is = %f\n",避免混淆。默认分支重复提示
default分支中同时调用NoneOfthose()和printf("Please enter a Valid choice"),两次输出提示属于冗余,保留其一即可。函数参数硬编码
主函数中调用面积计算函数时使用固定值(如AreaOfSquare(5)),程序无法根据用户输入的尺寸计算面积,应改为让用户输入对应参数。NoneOfthose函数返回类型不合理
该函数仅用于打印提示,不需要返回值,声明为int类型不合适,应改为void类型。
修正后的完整代码
#include <stdio.h> void AreaOfSquare(int a); void AreaOfrectangle(float b, float h); void AreaOftriangle(float base, float height); void NoneOfthose(void); int main(void) { int choice; printf("请选择要计算的图形:1-正方形 2-矩形 3-三角形\n"); scanf("%d", &choice); switch(choice) { case 1: int side; printf("请输入正方形的边长:"); scanf("%d", &side); AreaOfSquare(side); break; case 2: float len, width; printf("请输入矩形的长和宽:"); scanf("%f %f", &len, &width); AreaOfrectangle(len, width); break; case 3: float base, height; printf("请输入三角形的底和高:"); scanf("%f %f", &base, &height); AreaOftriangle(base, height); break; default: NoneOfthose(); } return 0; } void AreaOfSquare(int a) { int area_s = a * a; printf("正方形的面积是 = %d\n", area_s); } void AreaOfrectangle(float b, float h) { float area_r = b * h; printf("矩形的面积是 = %.2f\n", area_r); } void AreaOftriangle(float base, float height) { float area_t = (base * height) / 2; printf("三角形的面积是 = %.2f\n", area_t); } void NoneOfthose(void) { printf("请输入有效的选项:1-正方形 2-矩形 3-三角形\n"); }
内容的提问来源于stack exchange,提问作者user21017887
相关产品推荐
相关产品推荐

