解题思路:

    不调用math函数(如果没有懂得原理只会调用函数的后果你懂的)

    本题意在考察我们数组数据的    录入,保存,查找,交换。


    对于本题:    1.定义数组 a[20]    //用于保存录入的数据


                                                      //申请20个空间是为了防止内存溢出(万一多输入了一个)


                         2.定义数组 b[20]   //用于备份处理过后的数据(负数转化为正数)


                                                      //并不是所有人都知道math.h里面的函数


注意事项:


    1.定义数组时一定要多申请空间。


参考代码:

#include<stdio.h>
int main()
{
    int a[20]={0},b[20]={0};
    
    int i;//循环变量
    int j=0;//记录最小值的位置
    int min;//记录最小值
    
    //录入并将负数转化为正数(处理过后的b数组是a数组取绝对值过后的)
    for(i=0;i<10;i++)
    {
      scanf("%d",&a[i]);
	    b[i]=a[i];                      //备份a数组数据到b数组
      if(a[i]<0)                      //检测是否是负数
      {
        b[i]=(-1)*a[i];             //如果是负数则将负数转化为正数再存入b数组
      }
    }
    //查找最小值
    min=b[0];
    for(i=1;i<10;i++)
    {    //用b数组是因为需要比较绝对值的大小
       if(b[i]<min)//如果找到数组中元素小于min,则将此元素赋值给min,使min始终记录最小值
      {
        min=a[i];
        j=i;               //记录此时最小值得位置
      }
    }
    //交换最小值与最末尾数据的位置
    a[j]=a[9];
    a[9]=min;
    
    //输出处理完成的最终数据
    for(i=0;i<10;i++)
    {
      printf("%d ",a[i]);
    }
    return 0;
}


点赞(7)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

Mdeng 5年前 回复TA
#include<stdio.h>

int main ()
{
	int a[10]={0};
	int Maximal=0,Least=0;  //保存最大数和最小数的下标数
	int max1=a[0],i=0,sum;  //sum是互换两个数时的容器

	for(i=0;i!=10;++i)
	{
	  scanf("%d",&a[i]);
	}
	  for(i=1;i!=10;++i)
	  {
			if(a[i]>max1)
		   {
		     Maximal=i;    //遍历数组得到最大的下标数
		   }
	  }
	
		for(i=0;i!=10;++i)
		{
		       if(a[i]<max1)
			  {
				 Least=i;    //遍历数组得到最小的下标数
			  }	
		}

		sum=a[Maximal];
		a[Maximal]=a[Least];  //互换两个数
		a[Least]=sum;

		for(i=0;i!=10;++i)
		{
		 printf("%d  ",a[i]);
		}
return 0;
}


各位老哥看看为啥是错的?
Veteran 5年前 回复TA
兄弟,你这样不行,我和你写的基本一模一样,这样的话最后输出的全是正数
saitama 6年前 回复TA
把数字从a数组存到b数组的的那一段一点不足,就是顺序调换一下可能会更好
还有就是记录下标的问题,其实用min来表示下标会比较好
啊哈哈哈 6年前 回复TA
点点赞好嘛