24 算菜价(C语言四舍五入的总结)
24 算菜价
作者:
问题描述 :
妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐。现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵。
输入说明 :
输入含有一些数据组,第一行第一个数是测试组数,第二行第一个数据是菜种数,每组数据包括菜种(字串),数量(计量单位不论,一律为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 }