顺序查找的代码,没有报错但是运行不了,如何解决?(语言-c语言)

img

img


顺序查找的代码,没有报错但是运行不了,如何解决?(语言-c语言)

#include<stdio.h>
#include<stdlib.h>
#define size 20
typedef int keytype;
typedef int othertype; 
typedef struct{
    keytype key2;
    othertype odata;
}Recordtype;
typedef struct {
    Recordtype r[size+1];
    int length;
}Recordlist;
int Seqsearch(Recordlist l,keytype k)
{
    int i=l.length;
    while(i>=1&&l.r[i].key2!=k)i--;
    if(i>=1)return i;
    else return 0;
}
int main()
{   int k,k2,q;
    Recordlist l;
    printf("print k2=\n");
    k=k2;
    scanf("%d",&k);
    printf("print odata,0 is end\n");
    for(int i=0;i<=size-1;i++)
    {
        getchar();//空格也是一个字符//
        scanf("%d",&q);
        if(q!=0)
        
            l.r[i].odata=q;
    }
    Seqsearch(l,k);
    return 0;
    
}

第一个getchar() 也没有变量接收,输入了个寂寞,改成 scanf("%d", &k);
主函数循环里面 getchar() 输入, 空格 也是一个字符,你这个要用 整型输入,用 scanf("%d", &q);

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7683815
  • 这篇博客也不错, 你可以看下不允许你还不会用这些操作符(详解c语言操作符)
  • 除此之外, 这篇博客: 啥是指针?指针怎么用?来看C指针快速入门(结合代码和图例讲解,通俗易懂)中的 一、基础概念 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         C语言区别于其他高级语言的一个特点是其拥有指针的概念,指针变量将内存地址作为数据值。下面代码中所示,定义了 num 整数变量,并给其赋值为 10。计算机执行该语句时,会在内存开辟一个大小为 4 字节的空间用于存放数值 10,使用 num 可以访问该内存空间中的数据。而指针变量 p 存放了 num 变量在内存中存放的第一个字节的地址。

    int num = 10;
    int *p = &num;

            示意图如下所示,假如变量 num 存放数据的内存地址为 1000 ~ 1003,指针 p 的内存地址为1004~1011(8个字节)。变量 num 内存中存放了数据 10,而指针 p 中记录了 num 内存的第一个字节的地址。

             指针存放内存地址,所以指针变量的大小和 CPU 寻址有关,在 64bit 机器中指针变量占 8 字节,32位机器中指针变量占 4 字节

  • 您还可以看一下 张明阳老师的深入理解C语言指针和结构体课程中的 C语言其余知识点补充小节, 巩固相关知识点