商品促销打折

前言

NWAFU P1537


一、题目

题目描述

现有商场进行降价促销,当购买商品总额在[100,200]之间时,折扣为95折,即总价=95%*总额,购买商品大于200元时,折扣为92折,购买金额不足100元时,无折扣。请编写程序计算需要支付的实际费用。

在程序的主函数中输入购买各个商品的费用总额(一组小数,以空格分隔,以'\n'或EOF结束输入,最多支持100件商品),请编写名为calPrice的函数计算实际费用,要求其函数原型为:

        float calPrice(float price); 

其中:形参price为各个商品的折扣前费用总额。返回为需要支付的实际费用。

在程序主函数中输出费用总额及实际费用,如:“167.00                158.65”。注意需要精确到分(小数点后两位),两数之间用两个制表符分隔。

输入

一组小数,以空格分隔,以'\n'或EOF结束,程序最多支持100件商品

输出

两个制表符分隔的消费总额及折扣后的实际费用,每条消费信息显示为一行结果。

样例输入
167 78.3
样例输出
167.00           158.65
78.30             78.30

二、设计步骤

此题原型为水费分段计价程序,小小分段难上台面,直接上成果:

#include<stdio.h>
#define T1 100          //阈值1
#define T2 200          //阈值2
#define C1 0.95         //折扣1
#define C2 0.92         //折扣2

float calPrice(float price);
int main(void)
{
    float a[100]={0},b[100] = {0};
    int i=0;
    float t;
    while(scanf(" %f",&t)!= EOF){
        a[i] = t;                              //存放原价(消费总额)
        b[i] = calPrice(a[i]);                 //存放实际费用
        char ch;
        scanf("%c",&ch);
        printf("%.2f\t\t%.2f",a[i],b[i]);
        printf("\n");
        if(ch == '\n')                          //换行结束输入
            break;
        i++;
    }
    return 0;
}

float calPrice(float price)                     //折扣计算 可读性拉满
{
    if(price >= T1&&price <= T2){
        return price * C1;
    }
    else if(price > T2){
        return price * C2;
    }
    return price;
}

如此完美的逻辑和准确无误的样例测试根本找不到优化的理由

然鹅,它很快告诉了我它与水费题的区别

输入

一组小数,以空格分隔,以'\n'或EOF结束,程序最多支持100件商品

好好好这么玩是吧

成品:

#include<stdio.h>
#define _CRT_SECURE_NO_WORNINGS 1
#define T1 100
#define T2 200
#define C1 0.95
#define C2 0.92

float calPrice(float price);
int main(void)
{
    float a[100]={0},b[100] = {0};
    int i=0;
    float t;
    while(scanf(" %f",&t)!= EOF){
        a[i] = t;
        b[i] = calPrice(a[i]);
        char ch;
        scanf("%c",&ch);
        printf("%.2f\t\t%.2f",a[i],b[i]);
        printf("\n");
        i++;
        if(ch == '\n'||i== 100)                  //小小的i == 100伤害了多少英雄豪杰
            break;
    }
    return 0;
}

float calPrice(float price)
{
    if(price >= T1&&price <= T2){
        return price * C1;
    }
    else if(price > T2){
        return price * C2;
    }
    return price;
}

总结

EOF

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值