Mister-小方


私信TA

用户名:1104986125

访问量:250413

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 37264
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

TA的其他文章

解题思路以及注意事项:

  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]);    
    }
}

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


 

0.0分

40 人评分

  评论区

楼主你这个代码好像有点瑕疵,不过问题不大
2020-06-01 14:13:40
#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
2020-05-07 20:52:28
我定义了两个数组,一个是原始数组,一个是操作数组,对操作数组赋予原始数组一样的值,然后将操作数组进行冒泡排序,即知首尾为最小最大值,再用遍历找寻原始数组关于最大最小值的下标(我的代码通过即证明该操作是对我们遇到的第一个最大最小值进行处理),通过值互换完成整个过程,代码略长,懒得上了。
2020-04-11 22:27:18
楼主 max=a[0];应该放在求最大之前吧,不然还是会错的吧
2020-04-05 18:01:26
#include<stdio.h>
void input(int a[10]);
void output(int a[10]);
void change(int a[10]);
int main()
{
	int a[10];
	input(a);
	change(a);
	output(a);
	return 0;
}
void input(int a[10])
{
	int i=0;
	for (i; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
}
void change(int a[10])
{
	int t,s;
	for (int i = 1; i < 10; i++) {
		if (a[i] < a[0])
		{
			t = a[i];
			a[i] = a[0];
			a[0] = t;
		}
		if (a[i] > a[9])
		{
			s = a[i];
			a[i] = a[0];
			a[0] = s;
		}
	}
}
void output(int a[10])
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}
}
能告诉我哪里错了吗?谢谢
2020-03-04 21:32:21
#include<stdio.h>
#include<string.h>
void f(int a[]){int i,j,t;

   for(i=0;i<9;i++){
    for(j=0;j<9-i;j++){
        if (a[j]>a[j+1]){
            t=a[j];a[j]=a[j+1];a[j+1]=t;
        }
    }
}
	
}
int main()
{int a[10],i,j,t;
for (i=0;i<10;i++)
scanf ("%d",&a[i]);
f(a);
for (i=0;i<10;i++){
    printf("%d ",a[i]);
}
}

能帮我看看哪里出错了吗,我用的是冒泡算法
2020-02-24 11:39:31
#include <stdio.h>

void shuru(int a[]);
void chuli(int a[]);
void shuchu(int a[]);
int main()
{
	int a[10];
	shuru(a);
	chuli(a);
	shuchu(a);
	return 0;
} 
void shuru(int a[]){
	int i;
	for(i=0;i<10;i++){
		scanf("%d",&a[i]);
	}
}
void chuli(int a[]){
	int i,j,temp,min,max;
	min=0,max=0;
	for(i=1;i<10;i++){
		if(a[i]<a[min]){
			min=i;
		}else if(a[i]>a[max]){
			max=i;
		}
	}
	temp=a[0];
	a[0]=a[min];
	a[min]=temp;
	temp=a[9];
	a[9]=a[max];
	a[max]=temp;
}
void shuchu(int a[]){
	int i;
	for(i=0;i<10;i++){
		printf("%d ",a[i]);
	}
}
为什么答案错误50%
2020-02-18 12:49:30
楼主的代码错了:::
楼主的只适用于题目的要求,
若将输入改为:22 1 3 4 5 6 7 8 10 9即可发现输出结果不符合要求
2020-02-09 22:04:29