解题思路以及注意事项:

  1. 主要得注意传参的问题,不要在自定义函数里面定义数组然后return到主函数,这是行不通的,因为自定义函数调用结束后,其中的数据会发生意想不到的结果。

  2. 交换值得用到第三者。

  3. 代码比较长,但还是挺简单的,一定要静下心来写代码。

实例代码:

#include"stdio.h"
void putin(int a[],int n);
void list(int a[],int n);
void putout(int a[],int n);
int main()
{
    int a[10];
    putin(a,10);
    list(a,10);
    putout(a,10);
    return 0;
}
void putin(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
}
 
void list(int a[],int n)
{
    int i,max,min,maxi=0,maxj=0,trans1,trans2;
    max=a[0];
    min=a[0];
    for(i=1;i<n;i++)
    {
        if(a[i]<min)
        {
            min=a[i];
            maxi=i;
        }
        if(a[i]>max)
        {
            max=a[i];
            maxj=i;
        }    
    }    
    trans2=a[0];
    a[0]=min;
    a[maxi]=trans2;
    for(i=1;i<n;i++)
    {
        
        if(a[i]>max)
        {
            max=a[i];
            maxj=i;
        }  
    }
    trans1=a[9];
    a[9]=max;
    a[maxj]=trans1;

}
 
void putout(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
           printf("%d ",a[i]);    
    }
}

看看大家还有什么问题,请在下方评论区留言,小方会在看到的第一时间为您解疑


点赞(16)
 

0.0分

34 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 70 条评论

圣彼得堡 2年前 回复TA
把max=a[0];放在交换最大值的那个循环上面的那一行,也就是第43行上面;因为如果a[0]为最大值时,就不满足题意了。
uq_45478322232 2年前 回复TA
你这不是错着吗?啊
uq_87534612122 2年前 回复TA
@uq_87534612122 稍微的修改一下
uq_87534612122 2年前 回复TA
int a[10];
   int i,j,min,max,temp,t,m,tem;
   for(i=0;i<10;i++){
       scanf("%d",&a[i]);
   }
   min=0;
   for(i=1;i<10;i++){
       if(a[i]<a[min]){
       temp=a[i];
       a[i]=a[min];
       a[min]=temp;
       }
       t=a[0];
       a[0]=a[min];
       a[min]=t;
   }
   max=1;
   for(i=2;i<10;i++){
       if(a[i]>a[max]){
           tem=a[max];
           a[max]=a[i];
           a[i]=tem;
       }
       m=a[9];
       a[9]=a[max];
       a[max]=m;
   }
   for(i=0;i<10;i++){
       printf("%d ",a[i]);
   }
   return 0;
ahong 2年前 回复TA
#include<stdio.h>
#include<string.h>
	void shur(int a[])
{int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void chul(int a[])
{int i,j,t;
	for(i=0;i<10;i++)
	{
		for(j=i+1;j<10;j++)
		{if(a[i]>=a[j])
		{
			t=a[i];
			a[i]=a[j];
			a[j]=t;
		}
		}
	}
}
void put(int a[])
{
	int i;
	for(i=0;i<10;i++)
		printf("%d ",a[i]);
	printf("\n");

}


	int main()
{
	int a[10];
	shur(a);
	chul(a);
	put(a);
	return 0;
}
不知道为什么运行通过不了
加油啊 2年前 回复TA
@极左与极右 感谢
卑微小宇 3年前 回复TA
@卑微小宇 我找到了问题的所在。#include<stdio.h> int main() {int a[10],i,j=0,k=0,min,max; for(i=0;i<10;i++){   scanf("%d",&a[i]); }   min=a[0];     max=a[0];     for(i=0;i<10;i++){         if(min>=a[i]) {           min=a[i];            j=i;          }         if(max<=a[i]){             max=a[i];             k=i;         }     }     if(a[0]==max){         a[0]=a[9];         a[9]=max;         a[j]=a[0];         a[0]=min;     }     else if(a[9]==min){         a[9]=a[0];         a[0]=min;         a[k]=a[9];         a[9]=max;     }     else     {     a[j]=a[0];     a[k]=a[9];     a[0]=min;     a[9]=max;     }     for(i=0;i<10;i++){         printf("%d ",a[i]);     } 	return 0; }我之前少考虑得是当如果第一位置是最大或者最后一个位置是最小时,之前的代码会产生覆盖。
卑微小宇 3年前 回复TA
#include<stdio.h>
int main()
{int a[10],i,j=0,k=0,min,max;
for(i=0;i<10;i++){
  scanf("%d",&a[i]);
}   min=a[0];
    max=a[0];
    for(i=0;i<10;i++){
        if(min>=a[i]) {
          min=a[i]; 
          j=i; 
        }
        if(max<=a[i]){
            max=a[i];
            k=i;
        }
    }
    a[j]=a[0];
    a[k]=a[9];
    a[0]=min;
    a[9]=max;
    for(i=0;i<10;i++){
        printf("%d ",a[i]);
    }
	return 0;
}请问大家我这个代码哪里错了 显示是有一半不对,很迷惑。
夜云空 3年前 回复TA
#include<stdio.h>
void chuli(int *p1,int *p2,int a[10])
{   int i,max=a[0],min=a[0],c,d;
    for(i=0;i<10;i++)
    {   if(a[i]>max)
        {max=a[i];
    	c=i;}
         if(a[i]<min)
        {min=a[i];
        d=i;}
        
        
    }
    
    *&a[c]=a[9];
    *&a[d]=a[0];
    
    
    
    *p1=min;
    *p2=max;
    
}
int main()

{   int a[10],i;
    for(i=0;i<10;i++)
    scanf("%d ",&a[i]);
    int *p1=a;
    int *p2=&a[9];
    chuli(p1,p2,a);
     for(i=0;i<10;i++)
    printf("%d ",a[i]);
    return 0;
}
这个代码哪里错了,求大神指点
迟迟 3年前 回复TA
@迟迟 #include<stdio.h>  int putin(int a[]); int list(int a[]); int putout(int a[]); int main() {     int a[10];     putin(a);     list(a);     putout(a);     return 0; } int putin(int a[]) {     int i;     for(i=0;i<10;i++)     {         scanf("%d",&a[i]);     }     return 0; }    int list(int a[]) { 	int i,j,t,min,max; 	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]; 		} 	} 	for(i=0;i<10;i++) 	{ 		if(min==a[i]) 			break; 	} 	for(j=0;j<10;j++) 	{ 		if(max==a[j]) 			break; 	} 	if(min!=a[0]) 	{ 		t=a[i]; 		a[i]=a[0]; 		a[0]=t;	 	} 	if(max!=a[9]) 	{ 		t=a[j]; 		a[j]=a[9]; 		a[9]=t;	 	}		 	return 0; } int putout(int a[]) {     int i;     for(i=0;i<10;i++)     {         printf("%d ",a[i]);         }     return 0; }