解题思路:

  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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

不是说没有输入吗
2017-11-17 16:18:26
  • «
  • 1
  • »