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 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题