2302_79933334 2024-01-03 10:37 采纳率: 81.3%
浏览 2
已结题

关于#c语言#的问题,请各位专家解答!

c语言交换最大值和最小值问题,为什么最后一个测试点是运行时错误。

#include<stdio.h>
int main()
{int i,n,max,min,maxnum,minnum,a[100],t;
scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    max=a[0];
    min=a[0];
     for(i=0;i<n;i++)
    {
       if(a[i]<min)
       {min=a[i];
          minnum=i;}
    }
    t=a[0];
    a[0]=a[minnum];
    a[minnum]=t;
  max=a[0];
    min=a[0];
      for(i=0;i<n;i++)
    {
       if(a[i]>max)
       {max=a[i];
          maxnum=i;}
    }
     t=a[n-1];
    a[n-1]=a[maxnum];
    a[maxnum]=t;
for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }

    return 0;
}


  • 写回答

2条回答 默认 最新

  • 哎呀呀不会啊 2024-01-03 10:45
    关注

    使用了a[n-1]和a[maxnum]来交换元素,这可能会导致数组越界

    #include <stdio.h>  
      
    int main() {  
        int i, n, max, min, maxnum, minnum, a[100], t = 0; 
        scanf("%d", &n);  
        for (i = 0; i < n; i++) {  
            scanf("%d", &a[i]);  
        }  
        max = a[0];  
        min = a[0];  
        for (i = 0; i < n; i++) {  
            if (a[i] < min) {  
                min = a[i];  
                minnum = i;  
            }  
        }  
        t = a[0];  
        a[0] = a[minnum];  
        a[minnum] = t;  
        max = a[0]; 
        min = a[0];
        for (i = 0; i < n; i++) {  
            if (a[i] > max) {  
                max = a[i];  
                maxnum = i;  
            }  
        }  
        t = a[maxnum]; 
        a[maxnum] = a[0]; 
        a[0] = t;  
        for (i = 0; i < n; i++) {  
            printf("%d ", a[i]);  
        }  
        return 0;  
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月11日
  • 已采纳回答 1月3日
  • 创建了问题 1月3日

悬赏问题

  • ¥15 WPF动态创建页面内容
  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线