算菜价
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11284 Accepted Submission(s): 6168
Problem Description
妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐。现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵。
Input
输入含有一些数据组,每组数据包括菜种(字串),数量(计量单位不论,一律为double型数)和单价(double型数,表示人民币元数),因此,每组数据的菜价就是数量乘上单价啊。菜种、数量和单价之间都有空格隔开的。
Output
支付菜价的时候,由于最小支付单位是角,所以总是在支付的时候采用四舍五入的方法把分头去掉。最后,请输出一个精度为角的菜价总量。
Sample Input
青菜 1 2
罗卜 2 1.5
鸡腿 2 4.2
Sample Output
13.4
这里就是利用了sscanf和sprintf函数 用法和scanf printf类似
sprintf的功能是将变量写到字符串中去 用法 sprintf(char*,/*输出格式如*/"%d",/*要输出的量如*/2)这样输出的结果就是"2\0";
而sscanf恰好相反是将字符串中的内容写入变量 sscanf(char*,"%d",&n) 就是将char*中的内容写入n 我是利用sprintf先保留一位小数输出然后再存回去。
我去百度了一下,直接把每次的钱加起来最后保留一位小数居然可以过。
代码
我的算法的代码
![]()
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11284 Accepted Submission(s): 6168
Problem Description
妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐。现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵。
Input
输入含有一些数据组,每组数据包括菜种(字串),数量(计量单位不论,一律为double型数)和单价(double型数,表示人民币元数),因此,每组数据的菜价就是数量乘上单价啊。菜种、数量和单价之间都有空格隔开的。
Output
支付菜价的时候,由于最小支付单位是角,所以总是在支付的时候采用四舍五入的方法把分头去掉。最后,请输出一个精度为角的菜价总量。
Sample Input
青菜 1 2
罗卜 2 1.5
鸡腿 2 4.2
Sample Output
13.4
这里就是利用了sscanf和sprintf函数 用法和scanf printf类似
sprintf的功能是将变量写到字符串中去 用法 sprintf(char*,/*输出格式如*/"%d",/*要输出的量如*/2)这样输出的结果就是"2\0";
而sscanf恰好相反是将字符串中的内容写入变量 sscanf(char*,"%d",&n) 就是将char*中的内容写入n 我是利用sprintf先保留一位小数输出然后再存回去。
我去百度了一下,直接把每次的钱加起来最后保留一位小数居然可以过。
代码
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 char a[100];
6 double m,n,k=0;
7 while(cin>>a>>m>>n)
8 {
9 k+=m*n;
10 }
11 printf("%.1lf\n",k);
12 return 0;
13 }
2 using namespace std;
3 int main()
4 {
5 char a[100];
6 double m,n,k=0;
7 while(cin>>a>>m>>n)
8 {
9 k+=m*n;
10 }
11 printf("%.1lf\n",k);
12 return 0;
13 }
我的算法的代码
1 #include <iostream>
2 #include <cstdio>
3 using namespace std;
4 #define MAXN 500+10
5 char s[MAXN];
6 int main()
7 {
8 //freopen("in.txt","r",stdin);
9 double a,b,c;
10 double sum = 0;
11 while(scanf("%s%lf%lf",s,&a,&b)!=EOF)
12 {
13 c = a * b;
14 sprintf(s,"%.1lf",c);
15 sscanf(s,"%.1lf",c);
16 sum += c;
17 }
18 printf("%.1lf\n",sum);
19 return 0;
20 }
2 #include <cstdio>
3 using namespace std;
4 #define MAXN 500+10
5 char s[MAXN];
6 int main()
7 {
8 //freopen("in.txt","r",stdin);
9 double a,b,c;
10 double sum = 0;
11 while(scanf("%s%lf%lf",s,&a,&b)!=EOF)
12 {
13 c = a * b;
14 sprintf(s,"%.1lf",c);
15 sscanf(s,"%.1lf",c);
16 sum += c;
17 }
18 printf("%.1lf\n",sum);
19 return 0;
20 }