c语言字符串输入按回车不能停止,为什么输入字符串我按回车不停止呢?求解...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

实在是恼火,现在运行又出问题,你帮我看看这个程序

#include

#include

#define MaxSize 100

#define IndexSize 20

typedef int KeyType;

typedef struct

{

KeyType key;

}DataType;

typedef struct

{

DataType list[MaxSize];

int length;

}SSTable;

typedef struct

{

KeyType maxkey;

int index;

}IndexTable[IndexSize];

int SeqSearch(SSTable S, DataType x)

{

int i = 0;

while(i < S.length && S.list[i].key != x.key)

i ++;

if(S.list[i].key == x.key)

return i + 1;

else

return 0;

}

int BinarySearch(SSTable S, DataType x)

{

int low, high, mid;

low = 0, high = S.length - 1;

while(low <= high)

{

mid = (low + high) / 2;

if(S.list[mid].key == x.key)

return mid + 1;

else if(S.list[mid].key < x.key)

low = mid + 1;

else if(S.list[mid].key > x.key)

high = mid - 1;

}

return 0;

}

int SeqIndexSearch(SSTable S, IndexTable T, int m, DataType x)

{

int i,j,b1;

for(i = 0; i < m; i ++)

if(T[i].maxkey >= x.key)

break;

if(i >= m)

return 0;

j = T[i].index;

if(i < m - 1)

b1 = T[i + 1].index - T[i].index;

else

b1 = S.length - T[i].index;

while(j < T[i].index + b1)

if(S.list[j].key == x.key)

return j + 1;

else

j ++;

return 0;

}

void main()

{

SSTable S1;

SSTable S2;

SSTable S3;

int i;

printf("请输入顺序表主表,输入结束请按#号键:");

for(i = 0; i < MaxSize; i ++)

{

scanf("%d", &S1.list[i].key);

if(S1.list[i].key == '#') break;

}

printf("\n请输入顺序表主表长度,输入结束请按#号键:");

scanf("%d", &S1.length);

printf("\n请输入折半查找主表:");

for(i = 0; i < MaxSize; i ++)

{

scanf("%d", &S2.list[i].key);

if(S2.list[i].key == '#') break;

}

printf("\n请输入折半查找表主表长度,输入结束请按#号键:");

scanf("%d", &S2.length);

printf("\n请输入索引顺序表主表:");

for(i = 0; i < MaxSize; i ++)

{

scanf("%d", &S3.list[i].key);

if(S3.list[i].key == '#') break;

}

printf("\n请输入索引顺序表主表长度:");

scanf("%d", &S3.length);

IndexTable T;

DataType x;

printf("\n请输入关键字:");

scanf("%d", &x.key);

int pos1, pos2, pos3;

if((pos1 = SeqSearch(S1, x)) != 0)

printf("顺序表的查找: 关键字%d在主表中的位置是: %2d\n", x, pos1);

else

printf("查找失败\n");

if((pos2 = BinarySearch(S2, x)) != 0)

printf("折半查找: 关键字%d在主表中的位置是: %2d\n", x, pos2);

else

printf("查找失败\n"); if((pos3 = SeqIndexSearch(S3, T, 4, x)) != 0)

printf("索引顺序表的查找: 关键字%d在主表中的位置是: %2d\n", x, pos3);

else

printf("查找失败\n");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值