作业帮 > 综合 > 作业

C语言实验题 数列有序!

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/22 23:00:13
C语言实验题 数列有序!

描述

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序. 

 

输入

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列.n和m同时为0标示输入数据的结束,本行不做处理.

输出

对于每个测试实例,输出插入新的元素后的数列.

样例输入

3 3

1 2 4

0 0

样例输出

1 2 3 4

我自己的编码如下:

#include<stdio.h>

int main()

{

 int m,n,i,a[1000],t,j;

 while(scanf("%d %d",&n,&m),n!=0||m!=0)

 {

  for(i=1;i<=n;i++)

  {

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

  }

  if(m>=a[n]) 

  {

   printf("%d",a[1]);

   for(i=2;i<=n;i++) printf(" %d",a[i]);

   printf(" %d\n",m);

  }

  else if(m<=a[1]) 

   {

    printf("%d",m);

    for(i=1;i<=n;i++) printf(" %d\n",a[i]);

   }

  else 

  {

   for(i=1;i<=n;i++)

   {

    if(m<=a[i]) t=i;

   }

  for(i=1;i<t;i++) printf("%d ",a[i]);

  printf("%d ",m);

  for(t=i;t<n;t++) printf("%d ",a[t]);

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

  } 

 }

}

我的思路就是先进行判断,如果是前面两种情况的话,就先输出.如果不是的话,那m肯定是在这个数列的中间,然后根据我的代码进行输出.可是,如图:

 

第一个图的数据是3 3,输出完全正确;第二个是6 8,但是由于数列的最后三个数据不同,后面那个竟然错了.本人看了许久,看不出来错在哪里,求大神指教.谢谢!

 

 


C语言实验题 数列有序!
/*#include
int main()
{
void print(float*x,int n);
void change(float*x,int k);
int k = 5;
float float_a[10] = {1.2,4.5,58.9,2.1,3.6,5.6,8.4,9.6,73.4,87.0};
printf("原始的数列:\n");
print(float_a,10);
change(float_a,k);//把前五个数据置0
printf("前%d个数据置0后的数列:\n",k);
print(float_a,10);
return 0;
}
void print(float*x,int n)
{
for(int i =0; i < n; i++)
printf("%f ",x[i]);
printf("\n");
}
void change(float*x,int k)
{
for(int i =0; i < k; i++)
x[i] = 0;
}
*/
#include
int main()
{
int m,n,i,a[1000] ={0},t,j;
while(scanf("%d %d",&n,&m),n!=0||m!=0)
{
for(i=1;i=a[n])
{
printf("%d",a[1]);
for(i=2;i