|
原题是这样的:
设线形表存放在向量A[arrsize]的前elenum个分量中,且递增有序.试写一算法,将x插入到线形表的适当位置上,以保持线形表的有序性.
我在具体的作题过程中对其稍加修改,就是:
a.先定义一个结构体(其中包含一个数组)然后让用户输入若干整数到这个结构体的成员数组中,
b.然后系统对这些整数进行排序,再按排序后的顺序输出.
c.再然后用户从键盘输入的一个整数插入到这个数组的适当位置(保持有序性).
以下是我写的程序,但是结果显示a部分(至少是a部分)并不像我想象的那样.先输入几个数然后一回车就ok,而是好象并不响应回车,我靠.
我想问问各位高人:
(1)怎么让程序响应回车结束呢?
(2)怎么判断用户输入的是不是整型数并过滤掉?
(3)请大家帮我检查一下程序是不是还有我看不出来的错误.
(4)最后,好象在mian()函数中定义变量一定要在为结构体成员变量赋值之前,要不然就报错.这里就是sl.last=0一定要在int count,a,b等;之前.请问这是为什么?
#include <stdio.h>
struct
{ int A[20];
int last;
}sl; //定义一个结构体
int main(void)
{
int count = 0;
int a;
int b;
int c;
int temp;
sl.last = 0; //初始化变量
printf("lease input some numbers:\n");
while(getch() != '\n') //给结构体成员数组赋值
{
if(sl.last>=20)
{
printf("OVERFLOW\n");
break;
}
scanf("%d,",&(sl.A[count]));
sl.last = count++;
}
for(a=0; a<sl.last; a++) //给结构体数组排序
{
for(count=0; count<sl.last; count++)
{
if(sl.A[count] > sl.A[count+1])
{
b = sl.A[count];
sl.A[count] = sl.A[count+1];
sl.A[count+1] = b;
}
}
}
for(count=0; count<sl.last; count++) //输出排序后的数组
{
printf("%d,",sl.A[count]);
}
printf("\n");
while(sl.last < 20) //用户输入一个整型变量插入数组适当位置
{
printf("lease input a integer to insert:\n");
printf("ress '/x'/ to exit.\n");
if( getch()=='x' )
{ break; }
scanf("%d",&temp);
for(count=0; count<sl.last; count++)
{
if( (temp>sl.A[count]) && (temp<sl.A[count+1]) )
{
for(c=0; c<(sl.last+1-count); c++)
{
sl.A[sl.last+1-c] = sl.A[sl.last-c];
}
}
}
sl.last++;
for(count=0; count<sl.last; count++)
{
printf("%d,",sl.A[count]);
}
}
return (1);
} |
|