#include  <stdio.h>
#define    DATATYPE  int
#define    MAXSIZE 100
   typedef struct 
{DATATYPE datas[MAXSIZE];
int last;}SEQUENLIST;
 main( )
{SEQUENLIST a;
  int  i, j, k,x,h;printf("请输入顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
j=0;k=1;i=0;scanf("%d",&i);
while (i != -99) {j++;a.datas[k]= i;k++;scanf("%d",&i); }/*输入顺序表元素*/
printf("请输入要插入的地址");
scanf("%d",&h);
printf("请输入要插入的值");
scanf("%d",&x);
if(i<1||h>a.last+1||a.last>=MAXSIZE)
 return 0;
  else
  {for(k=a.last;k>=h;k--)
    a.datas[k]=a.datas[k-1];
     a.datas[h]=x;
  a.last=a.last+1;
  return 1;
  printf("%3d",a.datas[k]);}
 }
程序的功能是在表中插入一个数可是我运行完了没有结果打印出来!

解决方案 »

  1.   

    因为i=-99的时候才退出循环,所以i<1
    if(i<1||h>a.last+1||a.last>=MAXSIZE)
    直接退出P.S.好像刚开始并没有赋值给a.last
      

  2.   

    帮你修整了一下
    #include  <stdio.h>
    #define    DATATYPE  int
    #define    MAXSIZE 100
    typedef struct 
    {
    DATATYPE datas[MAXSIZE];
    int last;
    }
    SEQUENLIST;
    main( )
    {
    SEQUENLIST a;
    int  i, j, k,x,h;

    printf("请输入顺序表元素,元素为整型量,用空格分开,-99为结束标志 :");
    j=0;k=1;i=0;scanf("%d",&i);
    while (i != -99) {
    j++;
    a.datas[k]= i;
    k ++;
    scanf("%d",&i); 
    }/*输入顺序表元素*/
    a.last = k;
    printf("\n目前表内容为");
    for(k=1;k<a.last;++k)
    printf("%3d",a.datas[k]);
    printf("\n请输入要插入的地址");
    scanf("%d",&h);
    printf("\n请输入要插入的值");
    scanf("%d",&x);
    if(h<1||h>a.last+1||a.last>=MAXSIZE)
    return 0;
    else
    {
    for(k=a.last;k>=h;k--)
    a.datas[k]=a.datas[k-1];
    a.datas[h]=x;
    a.last=a.last+1;
    printf("\n目前表内容为");
    for(k=1;k<a.last;++k)
    printf("%3d",a.datas[k]);
    return 1;
    }
    }
    奇怪为什么k不从0开始?
      

  3.   

    P.S.好像刚开始并没有赋值给a.last  什么意思不明白。
    i的问题我解决了可是还是没有打印答案啊!
    问题到底出在那里那?