解题思路以及注意事项:

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

北落星尘 5年前 回复TA
这个网站的编译器是怎么回事,自己写的代码提交总是错误,这个优质题解提交上去也是错误.....
Mister-小方 5年前 回复TA
@dudulooooo 去你麻痹
白中白 5年前 回复TA
#include<stdio.h>
	int a[10];
void in(int a[])
{
	int i;
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
}
void ch(int a[])
{
	int min,max,i,j=0,k=0,t;
	min=a[0];
	max=a[0];
	for(i=1;i<10;i++)
	{if(a[i]<min)
			min=a[i],j=i;
     if(a[i]>max)
			max=a[i],k=i;
	}
	t=a[j];
	a[j]=a[0];
	a[0]=t;
	t=a[k];
	a[k]=a[9];
	a[9]=t;
}
void on(int a[])
{
	for(int i=0;i<10;i++)
		printf("%d ",a[i]);
}
void main()
{

	in(a);
	ch(a);
	on(a);
}
大婶们帮忙看看哪里错了,提交结果错误
飞羽 5年前 回复TA
用指针来排序
#include"stdio.h"
int main()
{
    void In(int* num);
    void Sort(int* str);
    void Out(int* num);
    int nums[10];
    In(nums);
    Sort(nums);
    Out(nums);
    return 0;
}
void In(int* num)
{   int i;
    for(i=0;i<10;i++)
    scanf("%d",num+i);
}
void Sort(int* str)
{
    int* a,x;
    int i,min=0,max=0;
    a=str;
    for(i=1;i<10;i++)
    if(*(str+max)<*(a+i))max=i;\\找到最大的坐标后,立即交换数据
x=*(str+9);
*(str+9)=*(a+max);
*(a+max)=x;
for(i=1;i<10;i++)
    if(*(str+min)>*(a+i))min=i;
x=*str;
*str=*(a+min);
*(a+min)=x;
}
void Out(int* num)
{		int i;
    for(i=0;i<10;i++)
    printf("%
胖胖 5年前 回复TA
数组定义的时候不初始化为0吗?
阿啸 5年前 回复TA
#include<stdio.h>
int input(int a[],int n)
{
    int i;
    for(i=0; i<n; i++)
        scanf("%d",&a[i]);
    return 0;
}
int deal(int a[],int n)
{
    int i,min,t,k,p,max;
    min=a[0];
    for(i=1; i<10; i++)
    {
        if(a[i]<min)
        {
            k=i;
            min=a[i];
        }
    }
    t=a[0];
    a[0]=min;
    a[k]=t;
    max=a[1];
    for(i=2; i<10; i++)
    {
        if(a[i]>max)
        {
            max=a[i];
            p=i;
        }
    }
    t=a[9];
    a[9]=max;
    a[p]=t;
    return 0;
}
int output(int a[],int n)
{
    int i;
    for(i=0; i<n; i++)
        print
BREEZE 5年前 回复TA
#include<stdio.h>
int a[10];

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

void exchange()
{
	
	for(int i=1;i<10;i++)
		{
			if(a[0]>a[i])
			{
				int temp;
				
				temp=a[0];
				a[0]=a[i];
				a[i]=temp;
			}	
		}
			
	for(int i=0;i<9;i++)
		{
			if(a[9]<a[i])
			{
				int temp;
				
				temp=a[9];
				a[9]=a[i];
				a[i]=temp;
				
			}	
		}	
}

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


int main()
{
	input();
	exchange();
	print();
		
	return 0;
}//为什么我的显示错%50?(哭唧唧
核弹头 6年前 回复TA
#include <stdio.h>
void ace(int b[]);
void mvp(int b[]);
void one(int b[]);
int main()
{
	int a[10];
	ace(a);
	mvp(a);
	one(a);
	 
	return 0;
}
void ace(int b[])
{
	int i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&b[i]);
	}
}
void mvp(int b[])
{
	int i,j,k,m,n;
	int min=b[0],max=b[0]; 
	for(i=1;i<10;i++)
	{
		if(b[i]>max)
		{
			max=b[i];
			j=i;
		}
	}
	m=b[j];
	b[j]=b[9];
	b[9]=m;
	for(i=1;i<10;i++)
	{
		if(b[i]<min)
		{
			min=b[i];
			k=i;
		}
	}
	n=b[k];
	b[k]=b[0];
	b[0]=n;
	
}
void one(int b[])
{
	int i;
	for(i=0;i<10;i++)
	{
		printf("%d ",b[i]);
	}
}
对上面调整一下就行了
779777 6年前 回复TA
答案是错误的也可以是优质题解?
dudulooooo 7年前 回复TA
第42行是什么鬼,而且答案是错的。
另外赞是怎么回事