开发者社区> 问答> 正文

c语言“结构体”一直报错 ?报错

按照网课输入下列代码,一直报错。
看起来应该是 结构体 部分有错
但是网课的代码就这么写的……
求问大家怎么修改!
#include
typedef struct Lnode *List;
struct Lnode{
int a[100];
int length;
};
int sequentialSearch(list tb1,int k);
int main(void)
{
int n,key;
int a[100];
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
scanf("%d",&a[i]);
scanf("%d",&key);
printf("%d "sequentialSearch(a,key));
}
int sequentialSearch(list tb1,int k){
int i;
tb1->a[0] = k;
for(i = tb1->length; &&tb1->a[i] != k;i--)
;
return i;
}


图片说明

展开
收起
爱吃鱼的程序员 2020-06-22 23:41:38 709 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    感觉题主很像我刚学C语言的时候,有问题不知该怎么办
    下面是我的解决方案

    //头文件没有包#include<stdio.h>typedefstructLnodeList;//你这里typedef类型重定义为List后面用的是liststructLnode{inta[100];intlength;};intsequentialSearch(List*tb1,intk);intmain(void){intn,key;scanf("%d",&n);//定义一个ListListtb1;//输入你要查找的值scanf("%d",&key);for(inti=0;i<n;i++){//这块应该是循环输入scanf("%d",&(tb1.a[i]));}//1.这里""后面缺少,//2.函数参数类型为List类型printf("%d",sequentialSearch(&tb1,key));}intsequentialSearch(List*tb1,intk){inti;tb1->a[0]=k;for(i=tb1->length;i>0&&tb1->a[i]!=k;i--);returni;}

    发现两个问题吧,
    一,include后面没有要包含的文件,空的一个include也是有问题的。
    二,在结构体定义之前,就先typedef这个结构体,所以编译器不知道这里tepydef的是个啥,报的未声明的错误。修改如下:
    //#include//或者删除
    structLnode{
    inta[100];
    intlength;
    };
    typedefstructLnode*List;
    //或者
    typedefstructLnode{
    inta[100];
    intlength;
    }*List;
    这个两个修改应该都行,你试试。
    PS:因为刚好要下载资源没分数,所以过来看看能不能挣点分数,还请采纳哈。

    注意你的大小写Listlist

    main是有类型的,是不是要有返回值呢?

    二楼说的你写错了大小写字母,也是问题,看这个编译报错,应该就是这个大小写。

    修改如下:
    typedefstructLnode{
    inta[100];
    intlength;
    }Lnode,*List;

    i=tb1->length-1;

    1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用Listlist

    你一开始就用typedef声明结构,一开始不能用typedef声明结构

    声明时使用Listlist

    1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用Listlist3.。。。。

    2020-06-22 23:41:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多