解题思路以及注意事项:

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

giao 5年前 回复TA
@斌哥 最大值在a[0],最小值在a[9],交换了两次,得加判断
giao 5年前 回复TA
@斌哥 有错误老哥
斌哥 5年前 回复TA
@斌哥 哪里错了呢?
斌哥 5年前 回复TA
#include<stdio.h>
void input(int * x)
{
	for (int i = 0; i < 10; i++)
		scanf("%d",&x[i]);
}
void fun(int * x)
{
	int maxi=0, mini=0;
	int max = x[0];
	int min = x[0];
	for (int i = 1; i < 10; i++)
	{
		if (max < x[i])
		{
			max  = x[i];
			maxi = i;
		}

		if (min > x[i])
		{
			min  = x[i];
			mini = i;
		}
		
	}
	int t = x[0];
	x[0] = x[mini];
	x[mini] = t;
	 t = x[9];
	x[9] = x[maxi];
	x[maxi] = t;
}
void getout(int * x)
{
	for (int i = 0; i < 10; i++)
		printf("%d ", x[i]);
}
int main()
{
    int x[10] = {0};
	input(x);
	fun(x);
	getout(x);
    return 0;
}
斌哥 5年前 回复TA
@阿啸 #include<stdio.h> void input(int * x) { 	for (int i = 0; i < 10; i++) 		scanf("%d",&x[i]); } void fun(int * x) { 	int maxi=0, mini=0; 	int max = x[0]; 	int min = x[0]; 	for (int i = 1; i < 10; i++) 	{ 		if (max < x[i]) 		{ 			max  = x[i]; 			maxi = i; 		}  		if (min > x[i]) 		{ 			min  = x[i]; 			mini = i; 		} 		 	} 	int t = x[0]; 	x[0] = x[mini]; 	x[mini] = t; 	 t = x[9]; 	x[9] = x[maxi]; 	x[maxi] = t; } void getout(int * x) { 	for (int i = 0; i < 10; i++) 		printf("%d ", x[i]); } int main() {     int x[10] = {0}; 	input(x); 	fun(x); 	getout(x);     return 0; }
墨魍 5年前 回复TA
#include<stdio.h>
#include<stdlib.h>
int swap(int* arr);

int main(void)
{
	int arr[10];
	for(int i = 0 ;i<10;i++)
	scanf("%d", &arr[i]);
	swap(arr);
	return 0;
}

int swap(int* arr)
{
	int m = 0;
	int n = 0;
	int temp;
	int max=arr[0];
	int min=arr[0];
	for (int i = 1; i < 10; i++)
	{
		if (min > arr[i])
		{
			min = arr[i];
			m = i;
		}
		if (max < arr[i])
		{
			max = arr[i];
			n = i;
		}		
	}
	temp = arr[0];
	arr[0] = arr[m];
	arr[m] = temp;

	temp = arr[9];
	arr[9] = arr[n];
	arr[n] = temp;

	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
}
错误%50.。。。。大佬们能不能看看哪里错了
冲进前五百冲鸭 5年前 回复TA
@一江之洋 逗号写在里面了
一江之洋 5年前 回复TA
我看你写的是 :
    putin(a,10);
    list(a,10);
    putout(a,10);
但是为什么不行?
   putin(a[10],10);
    list(a[10,]10);
    putout(a[10],10);
莺时无念 5年前 回复TA
#include <stdio.h>
void printf_a (int a[],int b);
void dealt (int a[],int b);
void scanf_a (int a[],int b); 
#define N 10
main () 
{
	int a[N];
	scanf_a(a,N);
	dealt(a,N);
	printf_a(a,N);
}
void scanf_a(int a[],int b)
{
	for (int i=0;i<b;i++)
	scanf("%d",&a[i]);
}
void dealt (int a[],int b)
{
	int c=a[0];
	int d=a[b-1];
	int m,n;
	for (int i=0;i<b;i++)
	{
		if(a[0]>a[i])
		{
		a[0]=a[i];
		m=i;
	    }
	    if(a[b-1]<a[i])
	    {
	    	a[b-1]=a[i];
	    	n=i;
		}
	}
	a[m]=c;
	a[n]=d;
}
void printf_a(int a[],int b)
{
	for (int i=0;i<b;i++)
	printf ("%d ",a[i]);
}不知道错哪儿了
圣者psy素爱 5年前 回复TA
@北落星尘 检查一下语法