实验10-1 圆形体体积计算器 (20 分)

本题要求实现一个常用圆形体体积的计算器。计算公式如下:

  • 球体体积 V=34​πr3,其中r是球体半径。
  • 圆柱体体积 V=πr2h,其中r是底圆半径,h是高。
  • 圆锥体体积 V=31​πr2h,其中r是底圆半径,h是高。

输入格式:

在每次计算之前,要求输出如下界面:

1-Ball
2-Cylinder
3-Cone
other-Exit
Please enter your command:

然后从标准输入读进一个整数指令。

输出格式:

如果读入的指令是1或2或3,则执行相应的体积计算;如果是其他整数,则程序结束运行。

  • 当输入为1时,在计算球体体积之前,打印Please enter the radius:,然后读入球体半径,完成计算;
  • 当输入为2时,在计算圆柱体体积之前,打印Please enter the radius and the height:,然后读入底圆半径和高,完成计算;
  • 当输入为3时,在计算圆锥体体积之前,打印Please enter the radius and the height:,然后读入底圆半径和高,完成计算。

计算结果在一行内输出,保留小数点后两位。

输入样例:

1
2
3
2.4 3
0

结尾无空行

输出样例:

1-Ball
2-Cylinder
3-Cone
other-Exit
Please enter your command:
Please enter the radius:
33.51
1-Ball
2-Cylinder
3-Cone
other-Exit
Please enter your command:
Please enter the radius and the height:
18.10
1-Ball
2-Cylinder
3-Cone
other-Exit
Please enter your command:

结尾无空行

// 思路: 用宏定义把三个体积公式定义出来
// 用switch-case 语句来进行主体部分

// 注意: 程序中存在大量的换行

#include <stdio.h>
#define PI 3.1415926535 //精度过低会导致答案偏小
#define V1(r1) (1.0*4/3*PI*r1*r1*r1)
#define V2(r2, h2) (PI*r2*r2*h2)
#define V3(r3, h3) (1.0/3*PI*r3*r3*h3)
main() {
    int num;
    // 注意 “ 结尾无空行” , 所以不能直接在循环开始的时候输出表头+ \n, 而要分开在开头和末尾
    printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:");
    while(scanf("%d", &num)) // 若成功读入, scanf返回成功读入的个数
    {
        printf("\n");
        int flag = 0; //用于其他情况跳出for循环的判断
        switch(num) {
            case 1 : 
                printf("Please enter the radius:\n"); 
                double r1;
                scanf("%lf", &r1);
                printf("%.2f\n", V1(r1));
                break;
            case 2:
                printf("Please enter the radius and the height:\n"); 
                double r2, h2;
                scanf("%lf %lf", &r2, &h2);
                printf("%.2f\n", V2(r2, h2));
                break;
            case 3:
                printf("Please enter the radius and the height:\n"); 
                double r3, h3;
                scanf("%lf %lf", &r3, &h3);
                printf("%.2f\n", V3(r3, h3));
                break;
            default:
                flag = 1;
                break;
        }
        if(flag) break;
        printf("1-Ball\n2-Cylinder\n3-Cone\nother-Exit\nPlease enter your command:");
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值