• *1020. 月饼


      1 /*
      2  * Main.c
      3  * 1020. 月饼
      4  *  Created on: 2014年8月31日
      5  *      Author: Boomkeeper
      6  **********部分通过********
      7  */
      8 
      9 #include <stdio.h>
     10 
     11 struct moonCake {
     12     int restore; //库存量
     13     int totalPrice; //总售价
     14     float price; //单价,利润率
     15 };
     16 
     17 /*
     18  * 以单价 降序 排序每种月饼
     19  */
     20 void sort(const int type, struct moonCake moonCakes[]) {
     21 
     22     int i, j;
     23     float temp_restore, temp_totalPrice, temp_price;
     24 
     25     for (i = 0; i < type; i++) {
     26         for (j = 0; j < type - i - 1; j++) {
     27             if (moonCakes[j].price < moonCakes[j + 1].price) {
     28                 temp_restore = moonCakes[j].restore;
     29                 temp_totalPrice = moonCakes[j].totalPrice;
     30                 temp_price = moonCakes[j].price;
     31 
     32                 moonCakes[j].restore = moonCakes[j + 1].restore;
     33                 moonCakes[j].totalPrice = moonCakes[j + 1].totalPrice;
     34                 moonCakes[j].price = moonCakes[j + 1].price;
     35 
     36                 moonCakes[j + 1].restore = temp_restore;
     37                 moonCakes[j + 1].totalPrice = temp_totalPrice;
     38                 moonCakes[j + 1].price = temp_price;
     39             }
     40         }
     41     }
     42 
     43 //    for(i=0;i<type;i++)
     44 //        printf("
    排序后:price : %f
    ",moonCakes[i].price);
     45 
     46 }
     47 
     48 /*
     49  * 比较市场需求量,计算最大利润
     50  */
     51 void cal(const int type, const int amount, struct moonCake moonCakes[]) {
     52 
     53     int i;
     54     float bufferRestore = 0; //月饼存量缓冲池,用于与市场需求量amount做比较
     55     float income = 0;
     56 
     57     i=0;
     58     while(bufferRestore<amount && i<type){
     59         bufferRestore += moonCakes[i].restore;
     60         i++;
     61     }
     62 
     63     i--;
     64     bufferRestore -= moonCakes[i].restore;
     65     income = (float)(amount - bufferRestore) * moonCakes[i].price;
     66 
     67     i--;
     68     while (i >= 0) {
     69         income += moonCakes[i].totalPrice;
     70         i--;
     71     }
     72 
     73     printf("%.2f
    ", income);
     74 }
     75 
     76 /*
     77  * 计算每种月饼的利润率
     78  */
     79 void calPrice(const int type, struct moonCake moonCakes[]) {
     80 
     81     int i;
     82 
     83     for (i = 0; i < type; i++) {
     84         moonCakes[i].price = (double) moonCakes[i].totalPrice
     85                 / moonCakes[i].restore;
     86 //        printf("price = %f
    ", moonCakes[i].price);
     87     }
     88 }
     89 
     90 int main(void) {
     91 
     92     struct moonCake moonCakes[1000]; //各种月饼
     93     int amount, type; //市场最大需求量,月饼种类
     94     int i;
     95 
     96     //读取
     97     scanf("%d %d", &type, &amount);
     98     getchar();
     99 //    printf("type = %d
    ",type);
    100 //    printf("amount = %d
    ",amount);
    101 
    102 
    103     for (i = 0; i < type; i++)
    104         scanf("%d", &(moonCakes[i].restore));
    105     getchar();
    106     for (i = 0; i < type; i++)
    107         scanf("%d", &(moonCakes[i].totalPrice));
    108 
    109 //    for(i=0;i<type;i++){
    110 //        printf("restore : %d ; ",moonCakes[i].restore);
    111 //        printf("totalPrice : %d
    ",moonCakes[i].totalPrice);
    112 //    }
    113 
    114     //计算每种月饼的利润
    115     calPrice(type, moonCakes);
    116 
    117     //以单价 降序 排序
    118     sort(type, moonCakes);
    119 
    120     //比较市场需求量,计算最大利润
    121     cal(type, amount, moonCakes);
    122 
    123     return 0;
    124 }

    做这道题目过程中,发现很好的给变量或函数起名字也不是很容易。

    至此,我把我能做出来的PAT(B)题目都写出来了,剩下的一些题目,要么是干脆没思路或参看别人的也看不懂的,要么就是有思路,但特别繁杂,自己也搞不清楚的。考试之前我尽量刷完,但还是要总结一下做过的题目,希望顺利。

    题目链接:

    http://pat.zju.edu.cn/contests/pat-b-practise/1020

    .

  • 相关阅读:
    MD5值算法原理
    AUTH过程
    锁定应用,解锁应用,锁卡,解卡,更改密码指令
    借/贷记卡的应用
    借记卡,贷记卡,准贷记卡三者的区别
    PBOC2.0与PBOC3.0的区别
    ED/EP简介
    与恒宝有关的一些常用知识
    java卡与native卡的区别
    计算机组和域的区别
  • 原文地址:https://www.cnblogs.com/boomkeeper/p/1020b.html
Copyright © 2020-2023  润新知