解题思路以及注意事项:

  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 条评论

jj 4年前 回复TA
@斌哥 这道题错误出现在fun函数,如果说你的排序刚好最小的在第一个,最大的在最后一个,那么按你这个方法,最小的在第一个不错,但是最后一个放的也是最小的。
懵懵 4年前 回复TA
@Rain丶Check handle函数错了
Rain丶Check 4年前 回复TA
void Input(int ch[])
{
	for (int i = 0; i < 10; i++)
		scanf("%d", &ch[i]);
}
void Handle(int ch[])
{
	for(int i=0;i<9;i++)
		for (int j =i+1;j<=9;j++)
		{
			if (ch[i] > ch[j])
			{
				int temp;
				temp = ch[i];
				ch[i] = ch[j];
				ch[j] = temp;
			}
		}
}
void Output(int ch[])
{
	for (int i = 0; i < 10; i++)
		printf("%d ", ch[i]);
}
int main(void)
{
	int ch[10];
	Input(ch);
	Handle(ch);
	Output(ch);
	return 0;
}
这个排序不是更简单嘛! 为什么是错的啊
哈哈哈 5年前 回复TA
@哈哈哈 void shuchu() {     for(int i=0;i<10;i++)         printf("%d ",a[i]); } int main() {     shuru();     chuli();     shuchu(); }
哈哈哈 5年前 回复TA
#include <stdio.h>
int a[10];
void shuru()
{
    for(int i=0;i<10;i++)
        scanf("%d",&a[i]);
}
void chuli()
{
    int max,min,temp,i,sx,sn;
    max = -1; min = 100000;
    for(i=0;i<10;i++)
    {
        if(a[i]<min)
            min = a[i];
    }
    for(i=0;i<10;i++)
    {
        if(a[i]>max)
            max = a[i];
    }
    for(i=0;i<10;i++)
    {
        if(min==a[i])
            sn = i;
    }
    temp = a[sn];
    a[sn] = a[0];
    a[0] = temp;
    for(i=0;i<10;i++)
    {
        if(max==a[i])
            sx = i;
    }
    temp = a[sx];
    a[sx] = a[9];
    a[9] = temp;
}
5年前 回复TA
@墨魍 是不是只有俩个函数呢???
5年前 回复TA
@一江之洋 规定吧,和字符串那些函数差不多,不写[ ~ ]
程序员不脱发 5年前 回复TA
楼主确定题解没错,我怎么看求最大值代码重复了
5年前 回复TA
把题解复制粘贴一下试试,也不对
Rollins 5年前 回复TA
@BREEZE 咋每个函数都没形参?