C语言 初级 函数块以及指针 自编程序异常

发布时间:2024-05-22 08:49 发布:上海旅游网

问题描述:

题目是,,用几个函数完成数组的输入平均值最大值最小值

我的程序如下

#include <stdio.h>

void input(int *px)
{
int i;
for(i=0;i<10;i++)
{
scanf_s("%d", px+i);
}
}

int fmax(int *px)
{
int i, max=*px;
for(i=1;i<10;i++)
{
if(max<*px+i)
max=*px+i;
}
return max;
}

int fmin(int *px)
{
int i, min=*px;
for(i=1;i<10;i++)
{
if(min>*px+i)
min=*px+i;
}
return min;
}

float fave(int *px)
{
int i;
float ave=0;
for(i=0;i<10;i++)
{
ave+=*px+i;
}
ave/=10;
return ave;
}

void main()
{
int a[10];
float ave;
int max, min;
input(a);
max=fmax(a);
min=fmin(a);
ave=fave(a);
printf("\naverage=%f\n", ave);
printf("max=%d, min=%d", max, min);
}

第一次输入是 1 2 3 4 5 6 7 8 9 10
结果完全没问题

但是之后不论怎么输入,都是第一次输出的结果。怎么回事

编译工具是VS2008

问题解答:

max<*px+i这个有问题吧,注意运算符的优先级
是不是要max<*(px+i);其他还有几处应该也一样

max, min;
没有给初值!
max应给最小的int数
min应给最大的int数

你写的代码好像是把数组里面的元素全部都给排序了,所以你怎么输入都是这个结果,你想知道为什么的话只能一个函数一个函数单独测试,那样比较好理解

热点新闻