输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。


题目描述


输入

十个数


输出

交换后的十个数


样例输入

10 2 30 40 50 60 70 80 90 100

样例输出

10 100 30 40 50 60 70 80 90 2

 1 #include<stdio.h>
 2 void fun_A();
 3 int abs(int n);
 4 void swap(int *,int *);
 5 int main()
 6 {
 7     fun_A();
 8     return 0;
 9 }
10 void fun_A()
11 {
12     const int n=10;
13     int array[n];
14     int key=0;
15     for(int i=0;i<10;i++)
16         scanf("%d",&array[i]);
17     for(int i=1;i<10;i++)
18         if(abs(array[key])>abs(array[i]))
19             key=i;
20     if(key!=n-1)
21         swap(&array[key],&array[n-1]);
22     for(int i=0;i<10;i++)
23         printf("%d ",array[i]);
24 }
25 int abs(int n)
26 {
27     return n>0?n:-n;
28 }
29 void swap(int *a,int *b)
30 {
31     int t=*a;
32     *a=*b;
33     *b=t;
34 }

原文地址:https://www.cnblogs.com/ysxyan/p/10498847.html

时间: 2024-11-02 08:07:18

输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。的相关文章

找出有序数组中绝对值最小的数

问题: 一个有序数组,值有可能有负值,也有可能没有,现需要找出其中绝对值最小的值. 方法1: 遍历数组,找到绝对值最小值,时间复杂度O(n),n为元素个数. 方法2: 二分查找,因为数组有序,可以利用二分查找,时间复杂度O(logn). 分析步骤: 如果第一个数为正数,说明整个数组没有负数,直接返回第一个数 如果最后一个数为负数,说明整个数组没有正数,直接返回最后一个数 数组元素有正有负,说明绝对值最小的元素肯定在正负数交界处,需要二分查找上场: 如果a[mid]<0,因为数组是升序,说明绝对值

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换.使用3个函数解决问题: (1) 输入10个整数的函数 (2) 进行交换处理的函数 (3) 输出10个数的函数 输出格式 输出结果,一行一个数字 输入样例 2 1 3 4 5 6 7 8 9 0 输出样例 input done swap done 0 1 3 4 5 6 7 8 2 9 display done 1 #include <stdio.h> 2 3 void input(int a[]) 4 { 5 ______

hdu Caocao&#39;s Bridges(无向图边双连通分量,找出权值最小的桥)

1 /* 2 题意:给出一个无向图,去掉一条权值最小边,使这个无向图不再连同! 3 4 tm太坑了... 5 1,如果这个无向图开始就是一个非连通图,直接输出0 6 2,重边(两个节点存在多条边, 权值不一样) 7 3,如果找到了桥的最小权值为0,也就是桥上的士兵数为0,那么还是要最少派一个 8 士兵过去炸掉桥! 9 10 思路:假设每两个节点最多只有一条边进行相连! 11 进行tarjan算法,如果该算法调用了超过2次,说明这个原图就是不连通的! 12 否则在tarjan算法中将桥存起来!然后

百度:求绝对值最小的数

我只是从网上搜集的,下面的代码或许有错误. 看了会Hadoop,和传华聊了会,他说,他们那三等奖8000,:打算要回宿舍了,不经意间看到了这个题,貌似简单,其实还是比较有难度的. 一段时间只能干一件事就行了. 有一个已经排序的数组(升序),数组中可能有正数.负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现,例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4. 算法实现的基本思路:找到负数和正数的分界点,

从100万个整数里找出100个最大的数

声明:本文最初发表于<电脑编程技巧与维护>2006年第5期,版本所有,如蒙转载,敬请连此声明一起转载,否则追究侵权责任.网上发表于恋花蝶的博客http://lanphaday.bokee.com 题目:从1亿个整数数中找出最大的1万个. 拿到这道题,马上就会想到的方法是建立一个数组把1亿个数装起来,然后用for循环遍历这个数组,找出最大的1万个数来.原因很简单,因为如果要找出最大的那个数,就是这样解决的:而找最大的1万个数,只是重复1万遍而已. template< class T >

1.2 如何找出唯一成对的数(4种解法)

作者:acDream_ 来源:CSDN 原文:https://blog.csdn.net/acDream_/column/info/32487 原文是用Java实现的,自己理解后用C语言实现,记录下来. Problem:1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次.设计一个算法,将它找出来,你能否设计一个算法实现? 思路1(最先想到的): 首先也是最暴力的方法就是一个循环嵌套一个循环,一个一个去找 时间复杂度为O(n²) 下面是实现的代码:

C++实现 找出10000以内的完数

C++实现 找出10000以内的完数 #include <stdio.h> int main(){ int n; // 用户输入的整数 int i; // 循环标志 printf("输入一个整数:"); scanf("%d",&n); printf("%d=",n); // n>=2才执行下面的循环 for(i=2; i<=n; i++){ while(n!=i){ if(n%i==0){ printf("

找出第k大的数

编程题#3:找出第k大的数 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 用户输入N和K,然后接着输入N个正整数(无序的),程序在不对N个整数排序的情况下,找出第K大的数.注意,第K大的数意味着从大到小排在第K位的数. 输入 N K a1 a2 a3 a4 ..... aN 输出 b 样例输入 5 2 32 3 12 5 89 样例输出 32 提示 这是一道很经典的算法问

笔试题--在一个整数数组中找出第5大的数

/** * 在一个整数数组中找出第5大的数 * 思路是首先在数组中找到最小数,然后依次找到第五大的数 * * @param array * @return */ public static int[] selectionSort(int[] array) { if (array.length == 0) return array; for (int i = 0; i < array.length; i++) { int minIndex = i; for (int j = i; j < arr