帮我修改个程序好吗?
某停车场对停车三小时内的车辆收费2元。超过三小时,每小时(或不足一小时)另外收费0.5元。24小时内最高收费10元,假设所有车辆停车时间都不超过24小时,编写一个程序,计算并打印停车费。输出格式:
car hours charge
1 1.5 2.00
2 4.0 2.50
3 24.0 10.00
程序如下:
#include "stdio.h "
float caculatecharge (float);
main()
{
float c,h,charge;
int i;
for(i=1;i <=3;i++)
printf( "%s%20s%20s\n ", "car ", "hours ", "charge ");
printf( "1%20f%20f\n ",h,charge);
scanf( "21%f ",&h);
printf( "%40d\n ",charge);
printf( "2%20f%20f\n ",h,charge);
scanf( "21%f ",&h);
printf( "%40d\n ",charge);
printf( "3%20f%20f\n ",h,charge);
scanf( "21%f ",&h);
printf( "%40d\n ",charge);
}
float caculatecharge(float h,float charge)
{
if(h <=3.0)
charge=2.0
if(h> =3.0 && h> =10.0)
charge=2+0.5*h;
if(h> =10.0)
charge=10.0;
return charge;
}
[解决办法]
#include <stdio.h>
#define SIZE 3
float caculatecharge (float);
int main(void)
{
float h_car[SIZE]={0} ;
int i=0 ;
for(i=1;i <=SIZE;i++)
{
printf( "Enter the time of No.%d car . ",i) ;
if(scanf( "%f ",&h_car[i-1])!=1 || /*数据错误,退出*/
h_car[i-1] <=0 || h_car[i-1]> 24 )
{printf( "Error\n "); return 0;}
}
printf( "%-22s%-20s%-20s\n ", "car ", "hours ", "charge ") ;
for(i=1; i <=SIZE; i++)
printf( "No.%-20d%-18.2f%-18.2f\n ",
i, h_car[i-1], caculatecharge (h_car[i-1])) ; /*计费函数的返回值*/
return 0 ;
}
float caculatecharge (float h)
{ if(h <=3.0) return 2.0 ;
else if(h> 3.0&&h <=18)
{
if ( h-(int)h == 0 ) return 2+(h-3)*0.5 ; /*整数个小时*/
else return 2+((int)h-2)*0.5 ; /*非整数*/
}
else return 10.0;
}