求大大看看,为什么没输出结果啊
题目要求:一家水果店出售四种水果,每公斤价格的苹果(代码为a)1.5元,橘子(代码为o)1.4元,香蕉(代码为b)1.48元,菠萝(代码为p)1.08元。编一个程序,使售货员只要在键盘上打入货品的代码及重量,计算机将显示货品名、单价、重量及总价。输入要求:你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组数据先是输入一个m,表示有m件货品要被购买。在接下来的m行中,每行输入两个值d,g。d表示货品的代码,g表示重量。两组数据之间没有多余的空行。
输出要求:对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)依次输出一组对应的答案。对应每组输入,输出货品名、单个总价及全部总价。具体格式参照样例输出:第一行apple前为7个空格,之后为2个空格,其他水果名后都是1个空格,sum后没有空格;第二行price后有2个空格,其后关于价格的表示多为占7格2位小数且左对齐,但其中pineapple为占10格2位小数且左对齐,注意sum的价格仍然占7格,如第一组样例中的54.60后还有2个空格;第三行weight后有1个空格,其后的数据与第二行一致。每两组数据之间有一个空行,最后一组测试数据之后没有空行。
输入样例:4
a 10
o 10
b 10
p 10
输出样例:apple orange banana pineapple sum
price 15.00 14.00 14.80 10.80 54.60
weight 10.00 10.00 10.00 10.00 40.00
以下是我的程序:
#include <stdio.h>
int main()
{
char d;
double g,sa,so,sb,sp,sum,ga,go,gb,gp,gsum;
int m,i,r=0;
while (scanf ("%d",&m)!=EOF)
{
sa=0;so=0;sb=0;sp=0;sum=0;
ga=0;go=0;gb=0;gp=0;gsum=0;
for(i=1;i<=m;i++)
{
scanf ("%2c %d",&d,&g);
switch(d)
{
case 'a':sa+=1.5*g;ga+=g;sum+=1.5*g;break;
case 'o':so+=1.4*g;go+=g;sum+=1.4*g;break;
case 'b':sb+=1.48*g;gb+=g;sum+=1.48*g;break;
case 'p':sp+=1.08*g;gp+=g;sum+=1.08*g;break;
}
gsum+=g;
}
if(r!=0)
printf("\n");
printf(" apple orange banana pineapple sum\n");
printf("price %-7.2lf %-7.2lf %-7.2lf %-10.2lf %-7.2lf\n",sa,so,sb,sp,sum);
printf("weight %-7.2lf %-7.2lf %-7.2lf %-10.2lf %-7.2lf\n",ga,go,gb,gp,gsum);
r++;
}
return 0;
}
是思路错了还是什么