C语言编程,求大神看看哪里错了。。

I:\shiyan1_lianbiao.c(41) : error C2115: 'function' : incompatible types
I:\shiyan1_lianbiao.c(41) : warning C4024: 'insert' : different types for formal and actual parameter 2
I:\shiyan1_lianbiao.c(89) : warning C4028: formal parameter 1 different from declaration
I:\shiyan1_lianbiao.c(109) : error C2115: 'function' : incompatible types
I:\shiyan1_lianbiao.c(109) : warning C4024: 'print' : different types for formal and actual parameter 1
I:\shiyan1_lianbiao.c(127) : error C2115: 'function' : incompatible types
I:\shiyan1_lianbiao.c(127) : warning C4024: 'print' : different types for formal and actual parameter 1

下面是程序

#include<stdio.h>

#include<malloc.h>
#define LEN sizeof(struct data)
struct data
{int num;
struct data *next;
};
int n;

int main()
{
struct data *creat();
struct data *search(struct data *,int);
struct data *del(struct data *,int);
struct data *insert(struct data *,struct data *);
void print(struct data);
struct data *head,dat;
int j,del_num;
int i;
printf("\n");
printf("[1] 存储数据\n");
printf("[2] 数据查找\n");
printf("[3] 数据插入\n");
printf("[4] 数据删除\n");
printf("[5] 退出\n");

do
{
scanf("%d",&i);
switch(i)
{
case 1:printf("请输入数据:");head=creat();break;
case 2:
printf("\n请输入要查找的位置:");
scanf("%d",&j);
search(head,j);
break;
case 3:
printf("请输入要插入的数据:");
scanf("%d",&dat.num);
head=insert(head,dat);
break;
case 4:
printf("请输入要删除的位置:");
scanf("%d",&del_num);
del(head,del_num);break;
case 5:break;
default:printf("错误选择!请重选");break;
}
}
while(i!=5);
return 0;

}

struct data *creat()
{
struct data *head;
struct data *p1,*p2;
n=0;
p1=p2=(struct data*)malloc(LEN);//开辟一个新结点
scanf("%d",&p1->num);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct data*)malloc(LEN);
scanf("%d",&p1->num);
}
p2->next=NULL;
return(head);
}

struct data *search(struct data *head,int j)
{

struct data *p;
int i;
p=head;
for(i=1;i<=j-1;i++)
{p=p->next;}
printf("\n查找的数据为:%d",p->num);
}
void print(struct data *head)

{
struct data *p;
printf("\n新数据:");
p=head;
if(head!=NULL)
do
{
printf("%d ",p->num);
p=p->next;
}while(p!=NULL);
}
struct data *insert(struct data *head,struct data *dat)

{
struct data *p0,*p1;
p1=head;
head=dat;
p0->next=p1;
printf("\n新数据:");
print(head);
return(head);
}

struct data *del(struct data *head,int num)
{
struct data *p,*p1;
int i;
p=head;
if(num==1) head=p->next;
else
{
for(i=1;i<=num-2;i++)
p=p->next;
}
p1=p->next;
p->next=p1->next;
printf("\n新数据:");
print(head);
return(head);
}

我发现了3个错误
1.你的search函数需要返回值
2.你的insert函数的参数是指针,传的参数应该是地址,但你却传值
3.insert函数里用到指针p0,你要先初始化
现在可以运行的代码如下(不保证是否符合题目要求,但现在运行没问题了)
#include<stdio.h>

#include<malloc.h>
#define LEN sizeof(struct data)
struct data
{int num;
struct data *next;
};
int n;

int main()
{
struct data *creat();
struct data *search(struct data *,int);
struct data *del(struct data *,int);
struct data *insert(struct data *,struct data *);
void print(struct data);
struct data *head,dat;
int j,del_num;
int i;
printf("\n");
printf("[1] 存储数据\n");
printf("[2] 数据查找\n");
printf("[3] 数据插入\n");
printf("[4] 数据删除\n");
printf("[5] 退出\n");

do
{
scanf("%d",&i);
switch(i)
{
case 1:printf("请输入数据:");head=creat();break;
case 2:
printf("\n请输入要查找的位置:");
scanf("%d",&j);
search(head,j);
break;
case 3:
printf("请输入要插入的数据:");
scanf("%d",&dat.num);
head=insert(head,&dat);
break;
case 4:
printf("请输入要删除的位置:");
scanf("%d",&del_num);
del(head,del_num);break;
case 5:break;
default:printf("错误选择!请重选");break;
}
}
while(i!=5);
return 0;

}

struct data *creat()
{
struct data *head;
struct data *p1,*p2;
n=0;
p1=p2=(struct data*)malloc(LEN);//开辟一个新结点
scanf("%d",&p1->num);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct data*)malloc(LEN);
scanf("%d",&p1->num);
}
p2->next=NULL;
return(head);
}

struct data *search(struct data *head,int j)
{

struct data *p;
int i;
p=head;
for(i=1;i<=j-1;i++)
{p=p->next;}
printf("\n查找的数据为:%d",p->num);
return p;
}
void print(struct data *head)

{
struct data *p;
printf("\n新数据:");
p=head;
if(head!=NULL)
do
{
printf("%d ",p->num);
p=p->next;
}while(p!=NULL);
}
struct data *insert(struct data *head,struct data *dat)

{
struct data *p0,*p1;
p0=new struct data;
p1=head;
head=dat;
p0->next=p1;
printf("\n新数据:");
print(head);
return(head);
}

struct data *del(struct data *head,int num)
{
struct data *p,*p1;
int i;
p=head;
if(num==1) head=p->next;
else
{
for(i=1;i<=num-2;i++)
p=p->next;
}
p1=p->next;
p->next=p1->next;
printf("\n新数据:");
print(head);
return(head);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-07
函数的前置声明最好放到main函数外面;
void print(struct data);
void print(struct data *head)
print 函数的声明和定义不一致;调用的时候导致找不到实现;或者参数不匹配;
第2个回答  2013-09-08
对于指针来说,建议有申请就尽量在程序结尾进行释放操作

一道c语言编程题求大神解答,找一下我错在哪了,谢谢了?
错误1:宏定义最后没有分号,将#define D 500;改为#define D 500 错误2:l不是整数,因此将l定义为int型就错了 错误3:既然规定输入格式为P=,那么输入时就不能直接输入数值,而应在数值之前输入P=,例如输入P=6000 另外,程序的不妥之处:1、利润不一定是整数,因此将P定义为int型不妥 2、i...

C语言简单程序,帮看看哪错了
错误点有3个:输入一个实数那行有个引号用了中文符,应该改为英文符;最后输出-a那段语句后面没有写“;”;定义变量a时为双精度浮点数,而输入时存为了单精度浮点数,存在溢出故障,会导致运行错误,见下图:应该改为如下 include<stdio.h> main(){ double a;printf("请输入一个实数:");scanf(...

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

c语言帮我看看哪里错了,小写化大写不行 结果是问号
tmp=tmp-32;printf("%c\\n",tmp);return 0;} }

我是c语言小白,问问大神帮我看看编写的简单程序这哪里出错了?
#include<stdio.h> 输入代码时忽视输入法隐藏的错误 表面上看都是一样的代码,但是第二行就有错误,是全角和半角的不同,再看:正确编译运行 所以你的代码没有任何问题,但是要注意代码输入的方法。以前回答了很多,有时间可以看看我最近回答c语言问题:网页链接 网页链接 网页链接 网页链接等等。

...差、积、商、余数,并输出。”麻烦看看我哪里错了,谢!
前面声明变量的时候类型是浮点型,所以格式符应该使用%f而不是%d,%d是整型。改为:include "stdio.h"void main(){ float x,y,a,b,c,d;scanf("%f%f,&x,&y);printf("%f%f%f",x+y,x-y,x*y,x\/y,x%d);}

C语言 ,求 a的b次方, 求大神看看错在哪里???\/
include<stdio.h> void main(){ int a,b,i;scanf("%d d",&a,&b);i=1;\/\/原程序中你把i=a;一进入while逻辑算法就错了 while(b);\/\/原程序中while(b>1);就算你之前的逻辑算法是对的,也只能得到a^(b-1)的值,因为漏了b=1这次 { i*=a;b-=1;} printf("%d\\n",i);} ...

C语言,数组输入遇到问题求大神指教:哪里错了,如何改正,为什么会出现...
scanf的格式加'\\n',含义特殊,不是输入一个回车,而是输入完一个数字后,必须等待一个非空格、制表符、回车的输入,程序才会继续。所以你那样写,第一次循环输入2回车,不会进入下一次循环,而是等待再次输入,然后你输入3的时候2被存储在元素1中,进入下一个循环,已经有3了还要等待输入,于是你输入...

刚学c语言,请大神看一下,哪里错了
你好,代码没有错,只是你在输入重力时,输入的格式没有按要求来输入重力g,正确的输入g应该是这样的,请看下图。希望能帮到你。

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()...

相似回答