在一个升序数组中插入一个数,使数组仍然保持升序排列。求代码
#include <stdio.h>
void sort(int num[],int n,int k)
{
for(int j=0;j<n;j++)
{
if(num[j]>k)
{
int a=num[j];
num[j]=k;
k=a;
}
}
num[n]=k;
for(int i=0;i<=n;i++)
printf("%5d",num[i]);
}
int main()
{
int t[100],c,d;
while(~scanf("%d %d",&c,&d))
{
for (int j=0;j<c;j++)
{
scanf("%d",&t[j]);
}
sort(t,c,d);
}
}
运行效果:
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽缺此度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如卜扮果m为负数,则右对齐(右侧补空白)。
2、转义伏弊迅字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
public class Test {
public static void main(String[] args) {
枣搏枯 int[] arr={1,2,3,4,55,66,78,234,556};//一个升序的数组
int[] arrs=new int [arr.length+1];//新建一个数组
int x=50;//要插入的数
for (int i = 0; i < arr.length; i++) {
arrs[i] = arr[i];//把arr的值都给arrs
}
System.out.println(Arrays.toString(arr));//输出一开始没有凳洞插入的
for (int i = arrs.length-2; i >= 0; i--) {//从最后一个开始循环
if(x > arrs[i]){//插入的大于现在则把插入的数插入到这个数的后面
银老 arrs[i+1]=x;
break;
}else{//否则就是插入的小于现在的把现在的往后移动一个
arrs[i+1]=arrs[i];
}
}
System.out.println(Arrays.toString(arrs));//输出插入之后的
}
}