当前位置: 首页 > 知识库问答 >
问题:

c - 数据结构顺序查找循环输出比对数值存在问题,输出时重复输出且未输出比对数值5?

王楚青
2023-05-25

#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int keytype;
typedef int infotype;
typedef struct
{
    keytype key;
    infotype otherinfo;
}elemtype;

typedef struct
{
    elemtype *R;
    int length;
}sstable;

int inittable(sstable *st)
{
    st->R=(elemtype*)malloc(11*sizeof(elemtype));
    if(!st->R) 
    return ERROR;
    st->length=0;
    return OK;
}
int search_seq(sstable ST,keytype key)
{
    int i;
    ST.R[0].key = key;
    for(i=ST.length;ST.R[i].key!=key;--i)
        printf("比较数值为:%d\n",ST.R[i].key);
    return i;
}
int main()
 {
     sstable ST;
     inittable(&ST);    
     ST.length=10;
     printf("输入10位数(每输入一次按空格):\n");
     for(int i=1;i<=ST.length;i++)
     {
         printf("输入第%d个:\t",i);
         scanf("%d",&ST.R[i].key);
      } 
      keytype key=5;
     search_seq(ST, key);
     printf("查找到下标为%d:",search_seq(ST,key));
    return 0;
}

image.png

共有1个答案

贺海
2023-05-25
     search_seq(ST, key);
  // ^^^^^^^^^^
     printf("查找到下标为%d:",search_seq(ST,key));
  //                         ^^^^^^^^^^

调用了两次,自然还会输出两次。


    for(i=ST.length;ST.R[i].key!=key;--i)
                            // ^^
        printf("比较数值为:%d\n",ST.R[i].key);

不相等才执行循环体(打印),相等就不执行了。

 类似资料:
  • 给定这9个单词,在页面上显示与其所选数字对应的单词1.mercury2.venus3.earth4.mars5.jupiter6.saturn7.uranus8.neptune9.pluto 我不确定我在这里错过了什么,我做了很多尝试,一个错误,似乎没有什么工作。 我尝试使用NumEntry作为所有if语句的比较,但它不起作用。当我使var NumEntry=true;只有水星会显示。当我做var

  • 我正在制作一个程序,每当时间达到一个小时,它就会执行一些东西。 代码如下: 它应该输出17(因为现在是17:00),但不输出任何内容。 为什么不呢?

  • 我还有其他输出值的代码,如min、max和average。我不知道如何在用户通过扫描仪输入的排序数组中输出值。

  • 我试图编写一个程序来检查一个数字在Java中是否是回文。我试图将int转换为String,并使用内置方法编写了这个逻辑。但我不知道为什么给定输入的输出不正确。

  • 我希望在输入值字段中输出选项中的值。因此,如果我选择红色,我希望在输入值中输出红色

  • 本文向大家介绍Java输入输出流复制文件所用时间对比,包括了Java输入输出流复制文件所用时间对比的使用技巧和注意事项,需要的朋友参考一下 废话不多说,关键代码如下所述: 测试文件是