weixin_39965936
2021-05-29 21:50
采纳率: 84.6%
浏览 30

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;
    }
    
    已采纳该答案
    1 打赏 评论

相关推荐 更多相似问题