weixin_39965936 2021-05-29 21:50 采纳率: 68.8%
浏览 90
已采纳

C语言,为什么这个输出不对(指针之交换最小值最大值)?

#include <stdio.h>
#define N 10
void input(int *number)
{
	int *p,i;
	p=number;
	for(i=0;i<10;i++){
		scanf("%d",p++);
	}

     ///程序填空,请将该函数填写完整
}
void swap(int *number)
{
	int i,max,min,k=0,t=0,m=0;
	int temp1,temp2=0;
	max=number[0];
	min=number[0];
	for(i=0;i<10;i++){
		if(number[i]>max){
			max=number[i];
			k=i;
		}
		if(number[i]<min){
			min=number[i];
			t=i;
		}
	}
	temp1=number[0];
	number[0]=min;
	number[t]=temp1;
	temp2=number[9];
	number[9]=max;
	number[k]=temp2;
     ///程序填空,请将该函数填写完整
}
void output(int *number)
{	
	int i;
	for(i=0;i<10;i++){
		printf("%d ",number[i]);
	} 
     ///程序填空,请将该函数填写完整
}
int main()
{
    int number[N];
    input(number);
    swap(number);
    output(number);
    return 0;
}

由键盘上输入10个不重复的整数,请将这些数中的最小值与第一个数交换,将最大值与最后一个数交换,然后输出交换后的数列。

这组数据就不成功:

输入示例1

10 7 6 3 9 8 2 5 1 4

输出示例1

1 7 6 3 9 8 2 5 4 10

该怎么改 救救孩子!

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-29 22:36
    关注

    因为碰巧第一个数是最大值,所以在交换的时候逻辑需要改一下。代码如下:(如有帮助,请采纳一下,谢谢哦)

    #include <stdio.h>
    #define N 10
    void input(int *number)
    {
    	int *p,i;
    	p=number;
    	for(i=0;i<10;i++){
    		scanf("%d",p++);
    	}
    	///程序填空,请将该函数填写完整
    }
    void swap(int *number)
    {
    	int i,max,min,k=0,t=0,m=0;
    	int temp1,temp2=0;
    	max=number[0];
    	min=number[0];
    	for(i=1;i<10;i++){
    		if(number[i]>max){
    			max=number[i];
    			k=i;
    		}
    		if(number[i]<min){
    			min=number[i];
    			t=i;
    		}
    	}
    	temp1=number[0];
    	number[0]=min;
    	number[t]=temp1;
    
    	if (k == 0)//修改:如果最大值是第一个元素
    	{
    		k = t;
    	}
    	temp2=number[9];
    	number[9]=max;
    	number[k]=temp2;
    	
    
    	
    	///程序填空,请将该函数填写完整
    }
    void output(int *number)
    {	
    	int i;
    	for(i=0;i<10;i++){
    		printf("%d ",number[i]);
    	} 
    	///程序填空,请将该函数填写完整
    }
    int main()
    {
    	int number[N];
    	input(number);
    	swap(number);
    	output(number);
    	return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置