解题思路:
1、找出数组中最小的数和下标;
2、按照顺序进行交换;
3、遍历数组中所有的数。
如图:
4 a[0] | 5 a[1] | 6 a[2] | 3 a[3] | 2 a[4] | 1 a[5] | 0 a[6] | 9 a[7] | 8 a[8] | 7 a[9] |
说明:第一次遍历,从a[0]开始,找出最小的数0和他的下标a[6],比较后交换。
第二次遍历,从a[1]开始,找出最小的数1和他的下标a[5],比较后交换。
第三次遍历,从a[2]开始,找出最小的数2和他的下标a[4],比较后交换。
………………………………
涉及知识点:整型数组和整型数组的输入与输出、循环和循环嵌套、数组下标的使用。
代码如下:
#include<stdio.h> //头文件 #define s 10 //定义一个宏参数 int main() { int a[s]={4,5,6,3,2,1,0,9,8,7}; //初始化数组; int i,j; int b=-1; //用来获取数组中最小的数,初始化时尽量不要与数组中的数字重合。 int c=-1; //用来获取a[]数组中的下标。 int M; //交换时临时变量。 for(i=0;i<s;i++) //给数组赋于新值,获取新的十个数。 { scanf("%d",&a[i]); } for(j=0;j<s;j++) // 外层循环,从a[0]开始遍历。 { b=a[j];//初始化b的值。 for(i=j;i<s;i++) //找出数组中最小的数和它的下标。 { if(b>a[i]) { b=a[i]; c=i; } } if(c!=-1)//交换最小的数,不等于-1是为了防止出现b<a[i]时,数据停止执行。 { M=a[j]; a[j]=a[c]; a[c]=M; } c=-1; //遍历时,每遍历一次,将下标初始化,注意初始化时尽量不要与数组中的下标重合。 } for(i=0;i<s;i++)//输出。 { printf("%d\n",a[i]); } return 0; }
0.0分
11 人评分
十->二进制转换 (C语言代码)浏览:1439 |
剔除相关数 (C语言代码)浏览:1914 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:753 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:638 |
C语言训练-角谷猜想 (C语言代码)浏览:1765 |
不会做的浏览:951 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:909 |
WU-printf基础练习2 (C++代码)浏览:2056 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:615 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:963 |