You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:25:16