解题思路:
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语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1280 |
C二级辅导-同因查找 (C语言代码)浏览:581 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1195 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1091 |
WU-陶陶摘苹果2 (C++代码)浏览:970 |
Hello, world! (C语言代码)浏览:714 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:406 |
杨辉三角 (C语言代码)浏览:484 |
字符串比较 (C语言代码)浏览:681 |
简单的a+b (C语言代码)浏览:534 |