24 算菜价(C语言四舍五入的总结)

24 算菜价

作者: xxx时间限制: 1S章节: 循环

问题描述 :

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

 

输入说明 :

输入含有一些数据组,第一行第一个数是测试组数,第二行第一个数据是菜种数,每组数据包括菜种(字串),数量(计量单位不论,一律为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

 

解题思路:这道题的思路很简单,但是C语言的四舍五入我不会处理,所以来总结下C语言的四舍五入。

例如对double型的num进行四舍五入,要求精确到小数点后的第n位。

那么这样解决。

int temp = (num*10(n+1)+5)/10;

num = (double)temp/(10n);

n>=0;

 

完整代码如下:

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 #include <string.h>
 5 #include <ctype.h>
 6 
 7 
 8 
 9 int answer(int n);
10 
11 
12 int main(){
13 
14 
15     char name[20];
16     int n,num;
17     double sum,unit,price;
18     int temp;
19     
20     scanf("%d",&n);
21     int i,j;
22     for(i=0;i<n;i++){
23         sum = 0.0;
24         scanf("%d",&num);
25         for(j=0;j<num;j++){
26             scanf("%s %lf %lf",name,&unit,&price);
27             sum = sum + unit*price;
28         }
29 
30         temp = (sum*100+5)/10;
31         sum = (double)temp/10;
32         printf("%.1f\n",sum);
33 
34     }
35     
36     return 0;
37 }
38 
39 int answer(int n){
40     
41     return 0;
42 }

 

 

 

 

posted @ 2020-03-17 15:09  focusDing  阅读(849)  评论(0编辑  收藏  举报