表中数据元素的数据类型为整型,按有序方式(从小到大)输入表中初始元素,再输入两个整数,以空格隔开,将两个整数插入到有序表中的正确位置。
输入描述:输入有序表中元素的个数 n,占一行; 按从小到大的顺序输入n个整数,以空格隔开,占一行; 输入待插入元素x , y,占一行。
输出描述:输出插入x 和 y 之后的有序表,以空格隔开,最后一个整数后面要求有空格。
测试输入1:
6
1 3 5 9 11 13
4 10
预期输出1:
1 3 4 5 9 10 11 13
测试输入2:
1
5
1 3
预期输出2:
1 3 5
根据提示,补充代码。
#include<stdio.h>
int main()
{
int flag = 0;
int x, y, i, j, n;
int a[100] = {0};
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d %d", &x, &y);
//将x y 有序插入到数组a中
/***********Begin***********/
/************End************/
for(i=0; i<n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
不要修改原代码,不要删除注释
代码如下:
#include<stdio.h>
int main()
{
int flag = 0;
int x, y, i, j, n;
int a[100] = {0};
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d %d", &x, &y);
//将x y 有序插入到数组a中
/***********Begin***********/
if(x>y) //先插入小的
{
i = x;
x = y;
y = i;
}
for(i=0;i<n;i++)
{
if(flag == 0) //说明x还没有插入
{
if(a[n-1]<x)
{
a[n] = x;
n++;
flag = 1;
}
else if(a[i]> x)
{
for(j=n;j>i;j--)
a[j] =a[j-1];
a[i] = x;
n++;
flag = 1;
}else if(a[i]==x)
flag = 1;
}else
{
if(a[n-1] < y)
{
a[n] = y;
n++;
break;
}
if(a[i]> y)
{
for(j=n;j>i;j--)
a[j] =a[j-1];
a[i] = y;
n++;
break;
}else if(a[i]==y)
break;
}
}
/************End************/
for(i=0; i<n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!【相关推荐】