读取文件中的数字并找到中值C
我正在构造一个C程序,它将斐波那契数打印到一个文件中,并找到中值 我得到的输出是一个非常大且不正确的数字。任何洞察都会很好 中值函数C读取文件中的数字并找到中值C,c,C,我正在构造一个C程序,它将斐波那契数打印到一个文件中,并找到中值 我得到的输出是一个非常大且不正确的数字。任何洞察都会很好 中值函数C int findMedian(FILE *file, int size) { int medianPos, medianVal, readVal, count; medianPos = (size / 2); count = 0; while(fscanf(file,"%d", &readVa
int findMedian(FILE *file, int size)
{
int medianPos, medianVal, readVal, count;
medianPos = (size / 2);
count = 0;
while(fscanf(file,"%d", &readVal)==1)
{
if(medianPos == count)
{
medianVal = readVal;
}
if ((medianPos += 1) == count)
{
if(size % 2) //This means that it is even
{
}
else
{
medianVal += readVal;
medianVal /= 2;
}
}
count++;
}
return medianVal;
}
文件
输出
The Fibonacci median: -1576638118
函数调用
median = findMedian(Fibonacci, size);
您的“count”变量未初始化。因此,您的if条件可能无法满足,并且您的medianVal也未初始化。我不知道这是否是全部问题,但是对于偶数,
size%2
将0
,因此您的逻辑在那里是向后的。if((medianPos+=1)==count
我认为这行有问题medianPos+=1
转换为medianPos=medianPos+1
。因此,medianPos
将继续增加。当达到中值时,为什么需要继续阅读?(使用size
时,您似乎已经知道文件中有多少个数字)。count
是一个未初始化的变量。请启用编译器警告。您忘记初始化某些变量。顺便说一句:这听起来像是一个可疑的家庭作业——不允许要求那些人这样做……谢谢你的意见,露西!我已将计数初始化为0,问题仍然存在。(添加了上面的编辑)您是否也初始化了medianVal,否则可能先满足第二个条件,然后向单位化值添加一个值
median = findMedian(Fibonacci, size);