C语言问题,高手请进,帮我看看,谢谢

void display()
{ int ch; /*菜单选项字符*/
SALARY *p; /*定义临时指针*/
p=head; /*从头指针开始*/
if(p==NULL) /*指针为空,即链表为空,返回主函数*/
{ printf("链表为空!\n");
return;}
else
{ print(p); /*调用输出函数显示头结点信息*/
for(;;) /*循环开始*/
{printf("\n\n0. Quit 1. Prior 2. Next 3. First 4.Last \n\n");/*菜单项Quit退出 Prior前驱 Next后继 First第一条 Last最后一条*/
printf("\n请从1~4中选择:"); /*提示输入菜单选项0~4*/
scanf("%d",&ch); /*输入菜单选项0~4*/
if(ch==0) break; /*如果选项为0,退出*/
switch(ch) /*开关语句根据选项字符判断*/
{ case 1:p=p->prior;if(p==NULL)p=head;break; /*指向前驱,没有前驱指向第一个*/
case 2:p=p->next;if(p==NULL) p=tail;break; /*指向后继,没有后继指向最后一个*/
case 3:p=head;break; /*指向第一个结点*/
case 4:p=tail;break; /*指向最后一个结点*/ }
print(p); /*调用输出函数显示指针所指结点信息*/ }
}
}
这是我编的程序
问题:error C2065: 'print' : undeclared identifier
我不知道怎样改正,求求高手帮我解答啊
#include<stdio.h>/*标准输入输出函数库*/
#include <stdlib.h> /*标准函数库*/
#include<conio.h>/*屏幕操作函数*/
#include <malloc.h>/*分配存储空间函数库*/
#include <string.h>/*字符串函数库*/
#include<math.h>/*常用函数库*/
#define N 10
typedef struct z1
{ char no[11];
char name[15];
float jbgz;
float koukuan;
float yfgz;
float shuijin;
float sfgz;
struct z1 *prior;
struct z1 *next;
}SALARY, * Link ;
/*初始化链表*/
#define LEN sizeof(struct z1)
Link head=NULL,tail=NULL; //全局变量
head和tail是全局变量,还有print能具体给我说说吗,我是菜鸟

书上答案是对的。

s占16个字节,其内容依次是
AAAABBBBCC\0\0DD\0\0 (\0表示内存中1个字节的二进制00000000)

而s[1]等价于 &s[1][0],即第一个字符B的地址。用%s输出时,当然是从B开始,一直在内存里找到\0为止。所以是 BBBBCC

"\"%s\"\n"中有两个\",表示字符串的内容里本身含两个双引号,故输出的完整结果是"BBBBCC"

有人认为"AAAA"末尾会自动加上\0,从而超过了4,不能用来初始化数组s. 这种观点在ANSI C制定之前是正确的。但是,ANSI C有了新的规定:当用双引号字符串去初始化char数组时,允许双引号中的字符个数等于数组大小。这时不会自动在被初始化的数组后面添加\0. 例如 char a[4]="AAAA"是合法的,但a[3](数组的最后一个字节)的下一个字节存放的是什么,则不确定,即strlen(a)是未知的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-24
首先,那个head、tail是从哪里冒出来的,是全局变量么。然后就是你的print函数应该先申明一下,要么将print放到display上面
第2个回答  2010-12-24
首先,那个head、tail是从哪里冒出来的,是全局变量么。然后就是你的print函数应该先申明一下,要么将print放到display上面
相似回答
大家正在搜