
代码如下:
#include <stdio.h>
int main()
{
int a[10],n,k;//n为要插入的数,k记录插在数组第几个元素之前
for(int i=0;i<9;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(int i=0;i<9;i++)
if(n<=a[i] )
{
k=i;//插在第k个元素之前
break;
}
for(int i=9;i>k;i--)
a[i]=a[i-1];//从第k个元素以后的元素依次后移一个
a[k]=n;//空出来的第k个位置放n
for(int i=0;i<=9;i++)
printf("%d\n",a[i]);
return 0;
}
其实还有一个不改动数组的版本,但我猜这不是这节课要练习的()
如下:
#include <stdio.h>
#include <stdbool.h>
int main()
{
int a[10],n;
bool cout=0;//判断有无输出过n,赋初值为0即未输出
for(int i=0;i<9;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(int i=0;i<9;i++)
{
if(n<=a[i] && !cout)//如果小于后一个数且之前没有输出过n
{
printf("%d\n",n);
cout=1;//改为已输出,之后不会再进入if
}
printf("%d\n",a[i]);
}
return 0;
}
要分享的大概就这些,如果有更好的方法欢迎交流!
如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!
(专栏里面还有更多题哦)
2465

被折叠的 条评论
为什么被折叠?



