编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交换。

编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交换,最小值与最后一个元素交换,交换后输出数组的值。在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]);
}
求大神帮看一看哪里不对,可以运行但不是题目要求

  给你代码如下:

 

#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");

}

 

运行结果如下:

 

 



温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-28
错误很多,而且都是常识性错误
最重要的错误:你的三个函数要处理的应该是同一个数组(同一个数组并不是名字相同就是同一个数组,),这里要用到把数组当参数传递给下一个要处理他的函数.
在main 函数函数中定义 int num[10];在main函数中调用的函数想处理这个数组就要获得该数组的首地址,而不是在定义同名函数,定义 int abc(int num[10]);调用abc(num);
不懂或要正确代码就追问
第2个回答  2012-12-28
函数无返回值 无参数
所以abc和 输出函数 的数组没有初始化
并且里面的内容全部被舍弃
而且ABC函数里 if没加花括号
并且不明白楼主为什么把数组分成两半输入输出
弱弱的问一句
函数没学吧?
第3个回答  2012-12-28
k=*max; //k存放最大值
*p=x[9];x[9]=k;k=*p; //这里却与最后一个元素交换
if(*p>*max) //这里标记了最大值,却没标记最小值
改为
{
if(*p>*max)
k=*max;
if(*m<*min)
l=*min;
}
*p=x[0];x[0]=l;l=*p;
*p=x[9];x[9]=k;k=*p;
改为
*max=x[0];x[0]=k;
*min=x[9];x[9]=l;

函数需要传参,不传参每个函数里面的数组都是独立的,在abc函数里的数组跟其他函数里的数组其实不是同一个数组
第4个回答  2012-12-28
#include<iostream.h>
void main()
{
int A[10];
int i,min,max;

cout<<"请输入10个整数:"<<endl;
for(i=0;i<10;i++)
cin>>A[i];

int x=0;
min=A[0];
for(i=0;i<10;i++)
{
if(A[i]<min)
{
min=A[i];
x=i;
}
}

int y=0;
max=A[0];
for(i=0;i<10;i++)
{
if(A[i]>max)
{
max=A[i];
y=i;
}
}

cout<<"原来数组中的数是:"<<endl;
for(i=0;i<10;i++)
cout<<A[i]<<" ";

int z;

z=A[0];
A[0]=max;
A[y]=z;

z=A[9];
A[9]=min;
A[x]=z;

cout<<endl<<"数组中的最大值是:"<<max<<endl; cout<<"数组中的最小值是:"<<min<<endl;
cout<<"交换后的数组中的数是:"<<endl;
for(i=0;i<10;i++)
cout<<A[i]<<" ";

cout<<endl;}

编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交 ...
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...

...把一个一维数组中最大的数和第一个数调换,最小的和最后一个数调换...
arr[k] = tmp;\/\/最大值和第一个数交换了 for ( i = 0; i < N; i ++ )if ( arr[i] < min ){ min = arr[i];k = i;} \/\/循环一遍后,arr[k]即为最小值得那个数,k为其下标 tmp = arr[N-1];arr[N-1] = arr[k];arr[k] = tmp;\/\/最大值和第一个数交换了 print...

...编写一个函数fun,函数的功能是把数组中的最大数和最小数交换。在主...
*maxp = a; int *end = a + n; while (a < end) { if (*a > *maxp) { maxp = a; } if (*a < *minp) { minp = a; } a++; } int t = *minp; *minp

C语言输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出...
就是如果最大最小值本来就在第一个或者最后一个的情况.比如, 最小值本来在a[0] 最大值在a[4]这样循环后min=0 max=4 于是 先做了一次交换 a[max]和a[0] 也就是a[4]和a[0]然后 又做了一次交换, a[min]和a[4] 还是a[0]和a[4] 又换回去了.导致最小在a[0] 最大在a[4] ...

⑵ 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和...
void fun(int a[], int n, int *max, int *d ){ int i;for(i=0,*max=0,*d=0;i<n;i++){ if( a[i] > *max ) *max=a[i],*d=i;} }

编写一个函数 int getMax(const int a[],int n),在数组中找出最大值...
int getMax(const int a[],int n){ int max;max=a[n-1];while(n--){ if(max

...将最大的与第一个数交换,最小的与最后一个数交换,输出交换后的结果...
include <stdio.h>void swap(int *a, int *b){printf("%d, %d\\n", *a, *b);int t = *a;*a = *b;*b = t;}void max_min(int *p, int n){int l = n;int *max = p, *min = p;while (n--) {min = *p > *min ? min : p;p++;}swap(min, --p);while (l...

急求!!!全国计算机等级考试二级C机考题库 附答案的最好 !急!!!
5: 第5题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 答案:void fun(int m, int k, int xx[]){int g=0,I,j,flag=1;for(i=m+1;i<m*m;i++){for(j=0;j<I;j++){if(i%j!=0)flag=1;else{flag=0;break;...

写一个函数,该函数功能为求一维数组的最大值,并返回最大值?
float a[10]){ float max=a[0];int i;for(i=1;i<10;i++){ if(max<a[i])max=a[i];} return max;} int main(){ float a[10] = {};float max = 0;int i;for(i=0;i<10;i++)scanf("%f",&a[i]);max=findMax(a);printf("最大值:%f\\n",max);return 0;} ...

求给定一个整数数组中的最大值
这段 C 代码定义了一个函数 findMax,该函数接受一个整数数组和数组的大小作为参数,并返回数组中的最大值。在 main 函数中,我们创建了一个示例整数数组并调用 findMax 函数来找到最大值,并将结果输出到控制台。include <stdio.h> \/\/ 函数声明 int findMax(int arr[], int n);int main() ...

相似回答