p=p1; (5) ; } p1=head1; printf(\ while(p1!=NULL)
{ printf(\ p1=p1->next; }
}
10. 将一个链表按逆序排列,即将链头当链尾,链尾当链头。 #define NULL 0 struct line { int num; (1) *next; }; main()
{ int len=1,i;
struct line *p1,*p2,*head,*new,*newhead;
p1=p2=head=(struct line *)malloc(sizeof(struct line)); scanf(\ while(p1->num!=0)
{ p1=(struct line *)malloc(sizeof(struct line)); scanf(\
if(p1->num==0) p2->next=NULL; else
{ (2) ; p2=p1; (3) ; } } p1=head; do {
printf(\ if(p1->next!=NULL)
p1=p1->next; printf(\
76
}while(p1->next!=NULL);
for(i=0;i while(p1->next!=NULL) { p2=p1; p1=p1->next; } if(i==0) newhead=new=p1; else new=new->next=p1; p2->next=NULL; } p1= (4) ; printf(\ for(i=0;i { printf(\ printf(\ } 二、 编程 1. 定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类 型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。 2. 有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个 数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。 3. 13个人围成一圈,从第一个人开始顺序报号1、2、3。 凡报到“3”者退出圈子。找 出最后留在圈子里的人原来的序号。 4. 编写一个程序,输入n个(少于10个)学生的姓名、性别、 成绩、出生年月日及入学 年月日,输出成绩在80分以上的学生的姓名、性别、成绩、出生和入学的年份。 5. 将上题改为“输出成绩在80分以上的18岁以下的女生的姓名、成绩、出生和入学的 年份”,试编写程序实现之。 6. 有10个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入10个学生 数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、 姓名、三门课成绩、平均分数)。 7. 设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序打印出链表中第 1,3,5,7...结点。 8. 设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将大于平均成绩的各 个结点打印出来。 77 9. 设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将成绩最高的结点作 为链表的第一个结点,成绩最低的结点作为尾结点。 10. 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中 的结点所包含的年龄等于此年龄,则将此结点删去。 78 第九单元 文 件 一、 选择题 1. 若fp是指某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值 是 。 A. EOF B. –1 C. 非零值 D. NULL 2. C语言可以处理的文件类型是 。 A. 文本文件和数据文件 B. 文本文件和二进制文件 C. 数据文件和二进制文件 D. 数据代码文件 3. C语言库函数fgets(str,n,fp)的功能是 。 A. 从文件fp中读取长度n的字符串存入str指向的内存 B. 从文件fp中读取长度不超过n-1的字符串存入str指向的内存 C. 从文件fp中读取n个字符串存入str指向的内存 D. 从str读取至多n个字符到文件fp中 4. 函数rewind的作用是 。 A. 使位置指针重新返回到文件的开头 B. 将位置指针指向文件中所要求的特定位置 C. 使位置指针指向文件的末尾 D. 使位置指针自动移至下一个字符位置 5. 在执行fopen函数时,若执行不成功,则函数的返回值是 。 A. TRUE B. –1 C. 1 D. NULL 6. 在C程序中,可把整型数以二进制形式存放到文件中的函数是 。 A. fprintf函数 B. fread函数 C. fwrite函数 D. fputc函数 二、 填空题 1. 从键盘输入一个字符串,把它输出到磁盘文件f1.dat中(用字符‘#’作为结束输入 的标志)。 # include char ch,fname[10]; printf(\文件名:\ gets(fname); 79