java!c! 2023-07-14 14:41 采纳率: 100%
浏览 61
已结题

输入十个数,将其中最小的数与第一个数进行对换,将最大的数与最后一个数进行对换。

输入十个数,将其中最小的数与第一个数进行对换,将最大的数与最后一个数进行对换。写出三个函数:1.输入10个数,2.进行对换处理,3.输出对换后的10个数。


#include<stdio.h>
int swap(int a[]){
    int i,*min,*max,t;
    min=&a[0];
    max=&a[0];
    for(i=1;i<10;i++)
    {
        if(*min>a[i]) {
            t=*min;
            a[i]=*min;
            *min=t;
        }
        if(*max>a[i]) {
            t=*max;
            a[i]=*max;
            *max=t;
        }
    }
    for(i=0;i<10;i++)
    {
        if(*min==a[i]){
         t=a[0];a[0]=a[i];a[i]=t;}
        if(*max==a[i]) {
        t=a[9];a[9]=a[i];a[i]=t;
}
    }
            
}
int prn(int b[]){
    int i;
    for(i=0;i<10;i++)
    printf("%d\t",b[i]);
}
void main()
{
    int i,a[10];
    printf("请输入十个数:");
    for(i=0;i<10;i++)
    {
    scanf("%d",&a[i]);
    }
    swap(a);
    prn(a);
    return;    
}

这是运行结果,程序应该怎么修改呢

img

  • 写回答

4条回答 默认 最新

  • Adelbert 1002@ 2023-07-14 15:11
    关注

    首先,swap 函数的返回类型定义为 int,但是在函数的末尾没有返回任何值。此外,prn 函数的返回类型也应该是 void,因为它没有返回值。另外,main 函数的返回类型应该是 int 而不是 void,这样可以通过返回一个整数值来指示程序的执行状态。

    此外,swap 函数中的逻辑有误。在找到最小值和最大值后,应该交换指针 minmax 指向的元素,而不是将数组元素与 *min*max 交换。另外,交换元素时,应该使用一个额外的变量来临时保存需要交换的元素值。

    对于输入的数组 a,找到最小值和最大值的方法也存在问题。首先,初始时应该将 minmax 分别指向数组的第一个元素 a[0]。然后,在遍历数组时,应该将 *min*max 分别与当前元素 a[i] 进行比较,而不是与 a[i] 进行比较。

    最后,prn 函数应该在循环结束后添加一个换行符 \n,以便每行输出一个数字。

    以下是修正后的代码:

    #include <stdio.h>
    
    void swap(int a[]) {
      int i, *min, *max, t;
      min = &a[0];
      max = &a[0];
    
      for (i = 1; i < 10; i++) {
        if (*min > a[i]) {
          min = &a[i];
        }
        if (*max < a[i]) {
          max = &a[i];
        }
      }
    
      t = *min;
      *min = a[0];
      a[0] = t;
    
      t = *max;
      *max = a[9];
      a[9] = t;
    }
    
    void prn(int b[]) {
      int i;
      for (i = 0; i < 10; i++) {
        printf("%d\t", b[i]);
      }
      printf("\n");
    }
    
    int main() {
      int i, a[10];
      printf("请输入十个数:");
      for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
      }
      
      swap(a);
      prn(a);
      
      return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月14日

悬赏问题

  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)