猿问

求大神帮看一看哪里不对,可以运行但不是题目要求的啊,为什么会这样?

编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交换,最小值与最后一个元素交换,交换后输出数组的值。在main函数中调用并检测该函数。

#include<stdio.h>
int input();
int abc();
int output();
intmain(){
int num[10];

input();
abc();
output();

}
int input()
{
int num[10];
int i;
for(i=0;i<9;i++)
scanf("%d",&num[i]);
scanf("%d",&num[9]);
}
int abc()
{
int x[10];
int*max,*min,k,l;
int*p,*m;
m=x+10;
max=min=x;
for(p=x+1;p<m;p++)
if(*p>*max)
max=p;
k=*max;
l=*min;
*p=x[0];x[0]=l;l=*p;
*p=x[9];x[9]=k;k=*p;
return 0;
}
int output()
{
int x[10];
int*p;
for(p=x;p<x+9;p++)
printf("%5d",*p);
printf("%5d\n",x[9]);
}

萧十郎
浏览 154回答 3
3回答

慕容3067478

给你代码如下:#include<stdio.h>#define&nbsp;N&nbsp;10&nbsp;//&nbsp;定义数组元素为10个void&nbsp;input(int&nbsp;a[]);void&nbsp;abc(int&nbsp;a[]);void&nbsp;output&nbsp;(int&nbsp;a[]);&nbsp;int&nbsp;main&nbsp;(){  &nbsp;int&nbsp;num[N];  &nbsp; &nbsp; input&nbsp;(num);&nbsp;//&nbsp;向指定数组中输入数据  &nbsp; &nbsp; abc&nbsp;(num);&nbsp; //&nbsp;处理指定数组中的数据&nbsp; &nbsp; output&nbsp;(num);&nbsp;//&nbsp;输出指定数组中的数据&nbsp;  &nbsp;return&nbsp;0;}  void&nbsp;input&nbsp;(int&nbsp;a[])  {  &nbsp; &nbsp; int&nbsp;i;  &nbsp; &nbsp; for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;N;&nbsp;i++)  &nbsp;{  &nbsp; &nbsp; &nbsp; &nbsp; scanf&nbsp;("%d",&nbsp;&a[i]);  &nbsp;}}&nbsp;void&nbsp;abc(int&nbsp;a[]){  &nbsp; &nbsp; int&nbsp;minValue&nbsp;=&nbsp;a[0];  &nbsp;int&nbsp;maxValue&nbsp;=&nbsp;a[0];  &nbsp;int&nbsp;minPosition&nbsp;=&nbsp;0;  &nbsp;int&nbsp;maxPosition&nbsp;=&nbsp;0;  &nbsp;int&nbsp;i;  &nbsp;for&nbsp;(i=1;&nbsp;i<N;&nbsp;i++)  &nbsp;{  &nbsp; if&nbsp;(a[i]&nbsp;<&nbsp;minValue)&nbsp;//&nbsp;比最小值更小,则记住最小值和位置  &nbsp; {  &nbsp; &nbsp;minValue&nbsp;=&nbsp;a[i];  &nbsp; &nbsp;minPosition&nbsp;=&nbsp;i;  &nbsp; }  &nbsp; if&nbsp;(a[i]&nbsp;>&nbsp;maxValue)&nbsp;//&nbsp;比最大值更大,则记住最大值和位置  &nbsp; {  &nbsp; &nbsp;maxValue&nbsp;=&nbsp;a[i];  &nbsp; &nbsp;maxPosition&nbsp;=&nbsp;i;  &nbsp; }&nbsp;}&nbsp;  &nbsp;//&nbsp;交换第一个元素和最大值  &nbsp;i&nbsp;=&nbsp;a[0];  &nbsp;a[0]&nbsp;=&nbsp;a[maxPosition];&nbsp;a[maxPosition]&nbsp;=&nbsp;i;&nbsp;  &nbsp;//&nbsp;交换最后一个元素和最小值  &nbsp;i&nbsp;=&nbsp;a[N-1];  &nbsp;a[N-1]&nbsp;=&nbsp;a[minPosition];  &nbsp;a[minPosition]&nbsp;=&nbsp;i;}&nbsp;void&nbsp;output&nbsp;(int&nbsp;a[]){  &nbsp; int&nbsp;p;  &nbsp; for&nbsp;(p&nbsp;=&nbsp;0;&nbsp;p&nbsp;<&nbsp;N;&nbsp;p++)  &nbsp;{  &nbsp; &nbsp; &nbsp; &nbsp; printf&nbsp;("%d&nbsp;",&nbsp;a[p]);  &nbsp;}  &nbsp;printf("\n");}&nbsp;运行结果如下:

12345678_0001

函数无返回值 无参数所以abc和 输出函数 的数组没有初始化并且里面的内容全部被舍弃而且ABC函数里 if没加花括号并且不明白楼主为什么把数组分成两半输入输出弱弱的问一句函数没学吧?

一只萌萌小番薯

错误很多,而且都是常识性错误最重要的错误:你的三个函数要处理的应该是同一个数组(同一个数组并不是名字相同就是同一个数组,),这里要用到把数组当参数传递给下一个要处理他的函数.在main 函数函数中定义 int num[10];在main函数中调用的函数想处理这个数组就要获得该数组的首地址,而不是在定义同名函数,定义 int abc(int num[10]);调用abc(num);
随时随地看视频慕课网APP
我要回答