狒狒嚎叫 2023-05-07 13:08 采纳率: 100%
浏览 35
已结题

求解惑!为啥它们的值会互换啊!

#代码如下:

#include<stdio.h>
#include<math.h>
void ball(int k){
    double r;
    printf("Please enter the radius:\n");
    scanf("%lf",&r);
    printf("%.2f\n",4.0/3*3.1415926*pow(r,3));
    printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:\n");
}
void squre(int k){
    double r,h;
    printf("Please enter the radius and the height:\n");
    scanf("%lf%lf",&r,&h);   //测试数据:
1
2
3
2.4 3
0
    printf("%f %f",r,h);   //这个是用来看r和h的数值,结果显示r=3  h=2.4 好困惑!!!
    if(k==2) printf("%.2f\n",3.1415926*pow(r,2)*h);
    else printf("%.2f\n",1.0/3*4*pow(r,2)*h);
    printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:\n");
}
int main(void)
{
    int k; 
    printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:\n");
    scanf("%d",&k);
    switch(k){
        case 1: ball(k);
        case 2:
        case 3: squre(k);
        default: break;
    }
    return 0;
}

img


img

  • 写回答

2条回答 默认 最新

  • a5156520 2023-05-07 13:17
    关注

    主要是因为switch-case结构里面,第一个case后面没加break,执行完第一个case,又继续执行其他case里的函数而导致结果不对,给第一个case添加一个break,然后整理下流程应该就可以了。

    修改如下:

    参考链接:

    
    #include<stdio.h>
    #include<math.h>
    
    // 每次计算前要显示的菜单 
    void menu(){
         printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:\n");
    }
    
    // 计算球体体积的函数 
    void ball(int k){
        double r;
        printf("Please enter the radius:\n");
        scanf("%lf",&r);
        printf("%.2f\n",4.0/3*3.1415926*pow(r,3));
       
    }
    
    // 计算圆柱体和圆锥体体积的函数 
    void squre(int k){
        double r,h;
        printf("Please enter the radius and the height:\n");
        scanf("%lf%lf",&r,&h);  
         //测试数据:
    
        /*
        1
        2
        3
        2.4 3
        0
        */ 
    
       // printf("%f %f",r,h);   //这个是用来看r和h的数值,结果显示r=3  h=2.4 好困惑!!!
        if(k==2) printf("%.2f\n",3.1415926*pow(r,2)*h);
        
    // 根据题目信息,求圆锥体的体积,应该是1.0/3*PI*pow(r,2)*h
    // 这里PI按照上面的 3.1415926来计算圆锥体的体积 
    // https://miniwebtool.com/zh-cn/volume-of-a-cone-calculator/ 
        else printf("%.2f\n",1.0/3*3.1415926*pow(r,2)*h);
        
    }
    int main(void)
    {
        int k; 
        menu();
        scanf("%d",&k);  // 获取选项序号 
        
      
        switch(k){
            
            // 输入1 ,计算完球体体积,则退出swith,不再继续往下执行 
            case 1: ball(k);break; 
            // 输入2和3,则计算对应圆柱体和圆锥体体积, 计算完成,则退出switch 
            case 2:
            case 3: squre(k);break;  
            default: break;
        }
            
        
        
        return 0;
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月7日