求大神帮看一下这个C语言程序哪错了,谢谢! 错误提示是expected expression before double(我打▲那行)

#include <stdio.h>
double calculate_charges(double);
int main()
{
int i,d,a;
double b,c,m;
c=0;
d=0;
float num[4];
m=num[a];
for(i = 1;i<=3;i++)
{
printf("Please enter your parking hour: ");
scanf("%d",&num[a]);
printf("Car%d ",i);
▲ c = c + calculate_charges(double b);
d=d+num[a];
a++;
}
printf("Total Hours %.2f Charge %.2f",d,c);
}
double calculate_charges(double b)
{
int a;
double m;
if(m<=3)
{printf("The charge is 2.00");
b=2.00;}
else if(3<m&&m<=19)
{ b=(m-3)*0.5+2;
printf("The charge is %f",b);}
else
{printf("The charge is 10.00");
b=10.00;}
return b;
}

#include <stdio.h>
double calculate_charges(double);
void main()
{
int i,d,a;
double b,c,m;
c=0;
d=0;
float num[4];
m=num[a];
for(i = 1;i<=3;i++)
{
printf("Please enter your parking hour: ");
scanf("%d",&num[a]);
printf("Car%d ",i);
c = c + calculate_charges(b);
d=d+num[a];
a++;
}
printf("Total Hours %.2f Charge %.2f",d,c);
}
double calculate_charges(double b)
{
int a;
double m;
if(m<=3)
{printf("The charge is 2.00");
b=2.00;}
else if(3<m&&m<=19)
{ b=(m-3)*0.5+2;
printf("The charge is %f",b);}
else
{printf("The charge is 10.00");
b=10.00;}
return b;
}
1.mian函数没有return语句,可以改为void型
2.在函数传递参数时不用带上类型
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-17
#include <stdio.h>
double calculate_charges(double);
int main()
{
int i,d,a=0;//a必须初始化
double b,c,m;
c=0;
d=0;
float num[4];
m=num[a];
for(i = 1;i<=3;i++)
{
printf("Please enter your parking hour: ");
scanf("%d",&num[i]);//这里是a还是i
printf("Car%d ",i);
c = c + calculate_charges(b); //不要double
d=d+num[a];
a++;
}
printf("Total Hours %.2f Charge %.2f",d,c);
}
double calculate_charges(double b)
{
int a;
double m;
if(m<=3)
{printf("The charge is 2.00");
b=2.00;}
else if(3<m&&m<=19)
{ b=(m-3)*0.5+2;
printf("The charge is %f",b);}
else
{printf("The charge is 10.00");
b=10.00;}
return b;
}追问

您好,我想做的是一个分段函数,但是无论我输入什么从下面的小函数return回去的都是10,麻烦帮看一下,谢谢!

追答

#include
double calculate_charges(double);
int main()
{
int i,d,a=0;//a必须初始化
double b,c,m;
c=0;
d=0;
double num[4];
m=num[a];
for(i = 1;i<=3;i++)
{
printf("Please enter your parking hour: ");
scanf("%lf",&num[i]);//这里是a还是i,这里最好用double
printf("Car%d ",i);
c = c + calculate_charges(num[i]); //不要double
d=d+num[i];
a++;
}
printf("Total Hours %.2lf Charge %.2lf",d,c);
}
double calculate_charges(double m) //你的m和b反掉了,现在可以了
{
int a;
double b;
if(m<=3)
{printf("The charge is 2.00");
b=2.00;}
else if(3<m&&m<=19)
{ b=(m-3)*0.5+2;
printf("The charge is %f",b);}
else
{printf("The charge is 10.00");
b=10.00;}
return b;
}

追问

那个地方应该是a,我用i只是想让num只记3次罢了;
还是没用,现在变成无论输什么都出return 2。000了,然后我 c = c + calculate_charges(num[a]);
d=d+num[a];这两个求和用的函数根本用不上。。。。。麻烦您了

本回答被提问者和网友采纳
第2个回答  2013-05-17
括号里面那个double应该去掉吧!~