首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手有关问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序

2012-03-14 
新手问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序!如题,请各位朋友帮忙看下

新手问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序!
如题,请各位朋友帮忙看下下面的程序错在哪。
在TC200运行,输入数字:7,运行结果27476789。。

C/C++ code
#include<stdio.h>main(){ int a[10]={2,4,6,,8,10,12}  /*定义一个递增的数组*/ int i,j=0,k,l,z;  printf("please input a integer:\n"); scanf("%d",&i); while(a[j]!='\0')   /*数组中的元素个数*/  j++;  for(k=0;k<j;k++)    /*关键是这个循环,是循环出错了吗?*/ {  if(i>a[k])  {   for(l+j-1;l>k;l--)    a[l+1]=a[j];  }    }   a[l+1]=i;  /*插入*/  for(z=0;z<=j;z++)  printf("%d",a[z]);}

用了很多变量。。可否减少变量的数量?

[解决办法]
C/C++ code
 

#include <stdio.h>
int main()
{
  int a[10]={2,4,6,8,10,12}; /*定义一个递增的数组*/
  int i,j=0,k,l,z;

  printf("please input a integer:\n");
  scanf("%d",&i);

  while(a[j] != 0)    /*数组中的元素个数, 这里有问题,如果含有0就有问题了*/
    j++;

  for(k=0;k <j;k++)  /*关键是这个循环,是循环出错了吗?*/
  {
    if(i < a[k])
    {
      for(l=j-1;l >= k; l--)
        a[l+1] = a[l];

      break;
    } 
  }
  a[k] = i;  /*插入*/
  for(z=0;z <=j;z++)
    printf("%d ",a[z]);

  return 0;
}


[解决办法]
楼主思路好乱啊
C/C++ code
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { int a[10]={2,4,6,8,10,12}; int i,j,k;  printf("please input a integer:\n"); scanf("%d",&i); for (k = 0; k < 6; k++)     if (i < a[k]) break;/*找到插入位置*/ for (j = 6; j >= k; j--)/*元素后移*/     a[j+1] = a[j];   a[k] = i;  /*插入*/ for (k = 0; k < 6+1; k++)     printf("%d ",a[k]);  system("PAUSE"); return 0;} 

热点排行