我想制作一个获得2个月每天温度的程序,并打印每天的平均值
错误代码位于调用day_avg()的行
(不能将浮动浮动浮动*)
#include <stdio.h>
void day_avg(float month[],float month2[]);
int main()
{
float jul[31]={ 31,28,31,30,31,30,31,31,30,31,30,31 };
float aug[31]={ 31,28,31,30,31,30,31,31,30,31,30,31 };
day_avg(jul[31],aug[31]);
}
void day_avg(float month[],float month2[]){
int i;
float avg[31]={0};
for(i=0;i<31;i++)
avg[i]=(month[i]+month2[i])/2.0;
for(i=0;i<31;i++)
printf("\nAverage of temperature of 2 months for day %d :%.1f",i+1,avg[i]);
}
答案 0 :(得分:2)
您对day_avg(jul[31],aug[31])
的来电应为day_avg(jul, aug)
jul
和aug
是对数组的引用,它们知道它们有多大,所以在函数调用中指定它是错误的,并且没有做你想象的那样。实际发生的是您从jul
和aug
的数组索引31而不是整个数组发送值。
第二个问题是数组索引31超出了数组的范围,有效索引在大小为31的数组中为0-30
。
您希望在整个数组中发送所有日期的温度数据,因此day_avg(jul, aug)
答案 1 :(得分:1)
你正在调用你的功能
day_avg(jul[31],aug[31]);
day_avg
需要float *
类型的参数
由于数组名称在作为参数传递给函数时衰减为指针(并非总是如此),因此可以将其称为
day_avg(jul, aug);
编辑:根据OP的评论:我将输入定义为month[]
而不是month*
,我认为数组本身就是输入
编译器已解析
void day_avg(float month[], float month2[]);
as
void day_avg(float *month, float *month2);
您不能将整个数组传递给函数,而是传递给第一个元素。
侧面注意:
此外,如果day_avg
接受float
类型的参数,那么您无法将jul[31],aug[31]
作为数组索引编制从0
传递到C.
答案 2 :(得分:1)
您的void day_avg(float month[],float month2[])
函数正在等待指针并且您正在传递值。你应该这样传递day_avg(jul,aug);
答案 3 :(得分:0)
两个问题:
失踪;最后
float jul[31]={ 31,28,31,30,31,30,31,31,30,31,30,31 }; float aug[31]={ 31,28,31,30,31,30,31,31,30,31,30,31 };
第二个功能应该是:
day_avg(七月,八月);