A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)。

3 个回复

正序浏览
flymanshow 发表于 2015-7-17 22:24
这个不是有答案吗- -

看了,但不太能接收

回复 使用道具 举报
本帖最后由 huangsailin 于 2015-7-18 02:22 编辑

//刚刚敲了下,有强迫症自己添加了一点点废话,可以直接复制粘贴运行试下

/*某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。
*/

#include <stdio.h>

int main(int argc, const char * argv[]) {
    //定义变量y、z,分别用来存放用户输入的汽油品种和服务类型
    char y,z;
    //定义变量x、pay,用来存放用户输入的加油量和应付款
    float x,pay=0;
    //提示用户输入加油量x,汽油品种y和服务类型z,分别保存在变量x、y、z中
    printf("黑马加油站温馨提示:\n\n1.汽油品种有a、b、c三种可选,a单价6.92元/公升,b单价7.37元/公升,c单价7.64元/公升\n2.服务类型有f、m、e三种可选,f为自动加无优惠,m自己加优惠5%%,e协助加优惠10%%\n3.加油量单位为公升\n\n请分别输入加油量 汽油品种 服务类型,用空格隔开:\n");
    //接收用户输入的值
    scanf("%f %c %c",&x,&y,&z);
    //校验加油量是否大于零
    while (x<=0) {
        printf("别闹了亲!请重新输入大于零的加油量^_^\n");
        scanf("%f %c %c",&x,&y,&z);
    }
    //校验用户输入的汽油品种和服务类型是否存在
    if (y=='a'||y=='b'||y=='c') {
    }
    else {
        printf("很抱歉亲!目前还没有第四种价格的汽油,请重新输入:\n");
        scanf("%f %c %c",&x,&y,&z);
    }
    if (z=='f'||z=='m'||z=='e') {
    }
    else {
        printf("很抱歉亲!我们会尽快开放其他的服务类型,请重新输入:\n");
        scanf("%f %c %c",&x,&y,&z);
    }
    //用switch语句实现根据用户输入的加油量、汽油品种、服务类型而求出应付款pay
    switch (y) {
        case 'a':
            switch (z) {
                case 'f':
                    pay=6.92*x;
                    break;
                case 'm':
                    pay=6.92*0.95*x;
                    break;
                case 'e':
                    pay=6.92*0.9*x;
            }
        break;
        case 'b':
            switch (z) {
                case 'f':
                    pay=7.37*x;
                    break;
                case 'm':
                    pay=7.37*0.95*x;
                    break;
                case 'e':
                    pay=7.37*0.9*x;
            }
        break;
        case 'c':
            switch (z) {
                case 'f':
                    pay=7.64*x;
                    break;
                case 'm':
                    pay=7.64*0.95*x;
                    break;
                case 'e':
                    pay=7.64*0.9*x;
            }
    }
    //在控制台打印用户应付款等信息
    printf("\n您好!您本次加油量:%.2f公升 服务类型:%c 需要付的费用为:%.2f元,欢迎下次光临!\n",x,z,pay);
    return 0;
}
回复 使用道具 举报
这个不是有答案吗- -
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马