27 算菜价

问题描述 :

妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐。现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵。

 

输入说明 :

输入含有一些数据组,第一行第一个数是测试组数,第二行第一个数据是菜种数,每组数据包括菜种(字串),数量(计量单位不论,一律为double型数)和单价(double型数,表示人民币元数),因此,每组数据的菜价就是数量乘上单价啊。菜种、数量和单价之间都有空格隔开的。

注意样例输入应是如下:

1

3

青菜 1  2

罗卜 2  1.5

鸡腿 2  4.2

 

输出说明 :

支付菜价的时候,由于最小支付单位是角,所以总是在支付的时候采用四舍五入的方法把分头去掉。所以,请输出一个精度为角的菜价总量。

 

 

输入范例 :

2
3
青菜 2  2.53
罗卜 3  1.55
鸡腿 3  4.25
4
青菜 1.5  2.53
罗卜 2  1.55
鸡腿 3.5  4.25
虾 2 12

输出范例 :

22.5
45.8

 

思想:这题难点在于怎么四舍五入,小数无法取余,那么就扩大100倍,+5后再除10,这个时候如果有5分以上那么就会进位,如果5分以下就会被舍弃,再除10转换成double类型的数据。

 

#include <stdio.h>

int main(){
    int num;
    scanf("%d",&num); //有多少组数据
    for(int i=0;i<num;i++){
        int type,temp;
        char name[20];
        double s,price;
        double cur = 0.0;
        scanf("%d",&type);  //买了几种类型的菜?
        for(int k =0;k<type;k++){
            scanf("%s %lf %lf",&name,&s,&price);  //输入 菜名 份数 价格,菜名仅做输入处理。
            cur += s*price;  //计算这个菜花了多少钱 累加到cur中
        }
        temp = (cur*100+5)/10;  //四舍五入处理
        cur = (double)temp/10;
        printf("%.1f\n",cur);  

    }
    return 0;
}

 

上一篇:JAVA - 多线程 两种方法的比较


下一篇:Android中三种超实用的滑屏方式汇总(转载)