3 回答
TA贡献1773条经验 获得超3个赞
给你代码如下:
#include<stdio.h>
#define N 10 // 定义数组元素为10个
void input(int a[]);
void abc(int a[]);
void output (int a[]);
int main ()
{
int num[N];
input (num); // 向指定数组中输入数据
abc (num); // 处理指定数组中的数据
output (num); // 输出指定数组中的数据
return 0;}
void input (int a[])
{
int i;
for (i = 0; i < N; i++)
{
scanf ("%d", &a[i]);
}
}
void abc(int a[])
{
int minValue = a[0];
int maxValue = a[0];
int minPosition = 0;
int maxPosition = 0;
int i;
for (i=1; i<N; i++)
{
if (a[i] < minValue) // 比最小值更小,则记住最小值和位置
{
minValue = a[i];
minPosition = i;
}
if (a[i] > maxValue) // 比最大值更大,则记住最大值和位置
{
maxValue = a[i];
maxPosition = i;
}
}
// 交换第一个元素和最大值
i = a[0];
a[0] = a[maxPosition];
a[maxPosition] = i;
// 交换最后一个元素和最小值
i = a[N-1];
a[N-1] = a[minPosition];
a[minPosition] = i;
}
void output (int a[])
{
int p;
for (p = 0; p < N; p++)
{
printf ("%d ", a[p]);
}
printf("\n");
}
运行结果如下:
TA贡献1802条经验 获得超5个赞
函数无返回值 无参数
所以abc和 输出函数 的数组没有初始化
并且里面的内容全部被舍弃
而且ABC函数里 if没加花括号
并且不明白楼主为什么把数组分成两半输入输出
弱弱的问一句
函数没学吧?
TA贡献1795条经验 获得超7个赞
错误很多,而且都是常识性错误
最重要的错误:你的三个函数要处理的应该是同一个数组(同一个数组并不是名字相同就是同一个数组,),这里要用到把数组当参数传递给下一个要处理他的函数.
在main 函数函数中定义 int num[10];在main函数中调用的函数想处理这个数组就要获得该数组的首地址,而不是在定义同名函数,定义 int abc(int num[10]);调用abc(num);
添加回答
举报