题目描述
每到月末,小明就会对这个月的支出账单进行整理和统计。如今电脑已经普及大学校园,所以小明想让电脑帮忙做这件事情。聪明的你就为小明编一个程序来完成这件事情吧。
输入
多实例测试。首先输入一个整数ncase,表示测试实例的个数。每个测试实例的输入如下:
第一行是整数n (n<100)。然后是n行的账单信息,每一行由事物的名字name和对应的花费c组成,长度不超过200。中间会有一个或多个空格,而每一行的开头和结尾没有空格。 0.0 < c < 1000.0。
输出
每个测试实例对应一行输出,输出总的花费,小数点后保留一位数字。
样例输入
2
1
Buy books 62.28
3
Apple 2.3
Buy clothes for girl friend 260.5
Go to cinema 30
样例输出
62.3
292.8
解:
#include<stdio.h>
#include<string.h>
#include<math.h>
double fun(char *str){
int flag=0,i,j=0,x;
double sum=0;
for(i=strlen(str)-1;str[i]!=' ';i--){
if(str[i]=='.'){
flag=1;//如果有小数点将flag置为1
x=i;//x是小数点所在位置的下标
}
}
i++;//将i下标移到最后一个空格的下一位
if(flag==1){//存在小数点
int n=x-1;//将n置为小数点的前一位
while(str[n]!=' '){
sum+=(str[n]-48)*pow(10,j);
n--,j++;
}
n=x+1,j=-1;//将n置为小数点的后一位
while(n<strlen(str)){
sum+=(str[n]-48)*pow(10,j);
n++,j--;
}
}
else{//不存在小数点
int t=strlen(str)-1;
while(i<=t){
sum+=(str[t]-48)*pow(10,j);
t--,j++;
}
}
return sum;
}
int main()
{
int ncase,n;
double sum;
char c[200]={'\0'};
scanf("%d",&ncase);
while(ncase--)
{
sum=0;
scanf("%d",&n);
getchar();
while(n--){
gets(c);
sum+=fun(c);
memset(c,'\0',sizeof(char)*200);//将字符串c置为空,对下一次输入的字符串造成干扰
}
printf("%.1lf\n",sum);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)