解题思路:由题意是要我们先输入9个数字,对这九个数字排好序后再输入一个值并在排好的序列中找到一个恰当的位置插入使之继续有序;题目最后输出的格式要求既可以是每个数值隔行输出,也可以输出在一行。
输入前9个数据并对其排序在此不做赘述,直接梳理往已排好序的序列中插入一个值再排序的思路

语句:

for(i=0;i<9;i++) 

{

    if(n<matr[i])

        break;   

}                   /*该循环的作用是:找到插入的位置i。n依次比较各个元素,如果n小于matr[i]中某的一个值,说明n要插到这个值的前面,即跳出循环执行下面的语句将n插到合适的位置;如果n大于matr[i],就说明n只能插到matr[i]的最后面*/

for(j=8;j>=i;j--)

    matr[j+1]=matr[j];  /*如果n小于matr[i]中某的一个值,说明n要插到这个值的前面,同时matr[i]后面的元素依次后移一位,注意此时j=i,所以mart[i]位已经是空位*/

matr[i]=n;             /*最后将n赋值给mart[i]*/





注意事项:





参考代码:

#include<stdio.h>

int main()

{

int i,j,k,t,n,matr[100];

for(i=0;i<9;i++)

scanf("%d",&matr[i]);

for(i=0;i<8;i+=1)

{

k=i;

for(j=i+1;j<9;j++)

{

if(matr[k]>matr[j])

k=j;

}

if(i!=k)

{

t=matr[i];

matr[i]=matr[k];

matr[k]=t;

}

}

scanf("%d",&n);

for(i=0;i<9;i++)

{

if(n<matr[i])

{

break;

}

}

for(j=8;j>=i;j--)

matr[j+1]=matr[j];

matr[i]=n;

for(i=0;i<10;i++)

printf("%d\n",matr[i]);   

return 0;

}


 

0.0分

0 人评分

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

  评论区