解题思路以及注意事项:

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

4年前 回复TA
#include<stdio.h>
 
 fun3(int *pa)
 {
 	int i;
 	
 	for(i=0;i<10;i++)
 	{
	 	printf("%d ",pa[i]);
	}
	
 }
 
 void fun2(int *pa)
 {
 	int i,max=0,min=0,temp;
 	
 	for(i=1;i<10;i++)
 	{
 		if(pa[max]<pa[i])
 		{
 			max=i;
		}
		if(pa[min]>pa[i])
		{
			min=i;	
		}
	}
	
	temp=pa[0];
	pa[0]=pa[min];
	pa[min]=temp;
	
	temp=pa[9];
	pa[9]=pa[max];
	pa[max]=temp;
	
 }
 
void fun1(int *pa)
{
	int i;
	
	for(i=0;i<10;i++)
	{
		scanf("%d",&pa[i]);
	}
	
}
 
int main(void)
{
	int a[10];
	
	fun1(a);
	
	fun2(a);
	
	fun3(a);
	
    return 0;
}
Cx330 4年前 回复TA
楼主的答案编译出错50
苏沐橙 4年前 回复TA
楼主代码,检测的错误50,,,
Vincent 4年前 回复TA
#include<stdio.h>
void Input(int a[10]);
void Dw(int a[10]);
void Output(int a[10]);
int main()
{
	int a[10];
	Input(a);
	Dw(a);
	Output(a);
}

void Input(int a[])
{
	int i;
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
}

void Dw(int a[])
{
	int i,tem;
	int max=a[0],min=a[0],maxidx=0,minidx=0;
	for(i=0;i<10;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
			maxidx=i;
		}
		if(a[i]<min)
		{
			min=a[i];
			minidx=i;
		}	
	}
	tem=a[0];
	a[0]=a[minidx];
	a[minidx]=tem;
	tem=a[9];
	a[9]=a[maxidx];
	a[maxidx]=tem;
}

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

看不出哪里有问题
QT 4年前 回复TA
#include<stdio.h>

#define N 10

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

void process_data(int a[],int n)
{
	int i,t,flag;
	t=a[0];
	for(i=0;i<n;i++)
	{
		if(t>=a[i])
		{
			t=a[i];
			flag=i;
		}
	}
	a[flag]=a[0];
	a[0]=t;
	t=a[0];
	for(i=0;i<n;i++)
	{
		if(t<a[i])
		{
			t=a[i];
			flag=i;
		}
	}
	a[flag]=a[9];
	a[9]=t;
}

void output_num(int a[],int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%d ",a[i]);
	printf("\n");
}
int main()
{
	int a[N];
	input_num(a,N);
	process_data(a,N);
	output_num(a,N);
	return 0;
}
各位可以参考一下
zhaisihan 4年前 回复TA
@jj 最大的是第一位的时候都不行吧
小白 4年前 回复TA
楼主你这个代码好像有点瑕疵,不过问题不大
P 4年前 回复TA
#include <stdio.h>
int i,t,y;
int a[10] = { 0 };
void shuru()
{
	
	
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	
}
void chuli()
{
	t = a[0];
	y = a[0];
	
	for (i = 0; i < 10; i++)
	{
		
		
		if (t < a[i + 1])
		{

			t=a[i + 1] ;
			
		}	
	}
	for (i = 0; i < 10; i++)
	{
		if (t == a[i])
		{
			int e = a[9];
			a[9] = a[i];
			a[i] = e;
		}
	}
	
	for (i = 0; i < 10; i++)
	{
		
		
		
		if (y > a[i + 1])
		{
			
			y = a[i + 1];
			
		}
		
	}
	for (i = 0; i < 10; i++)
	{
		if (y == a[i])
		{
			int e = a[0];
			a[0] = a[i];
			a[i] = e;
		}
	}
	
}
void shuchu()
{
	for (i = 0; i < 10; i
✔✘✔ 4年前 回复TA
我定义了两个数组,一个是原始数组,一个是操作数组,对操作数组赋予原始数组一样的值,然后将操作数组进行冒泡排序,即知首尾为最小最大值,再用遍历找寻原始数组关于最大最小值的下标(我的代码通过即证明该操作是对我们遇到的第一个最大最小值进行处理),通过值互换完成整个过程,代码略长,懒得上了。
kk001 4年前 回复TA
楼主 max=a[0];应该放在求最大之前吧,不然还是会错的吧