为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2023-04-20 19:15:23
编写一个函数,该函数的功能是将一个整数数组中的最大值与第一个元素交换,最小值与最后一个元素交换,交换后输出数组的值。在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]);}
查看完整描述

3 回答

?
慕容3067478

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

}

 

运行结果如下:


查看完整回答
反对 回复 2023-04-23
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

查看完整回答
反对 回复 2023-04-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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

查看完整回答
反对 回复 2023-04-23
  • 3 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信