当前位置:文档之家› 结构体与共同体文件测验

结构体与共同体文件测验


for(p=p->link;p!=first;p= __【1】_____) { m = p->data + p->link->data + p->link->link->data; if (___【2】____) m3 = m; } return(m3); } 2. 以下程序的功能是统计循环链表中结点的个数, 其中first为指向第一个结点 的指针。请在【 】内填入正确内容。 int count(struct node *first) { struct node *p; if(first == NULL) return 0; int c = 1; p = first->link; while(____【1】______) { ___【2】________; p = ___【3】______; } return (c ); } 三、 程序阅读题 (30分,每题15分) 1. 以下程序的运行结果是_________。 main() { union EXAMPLE {struct { int x; int y; }in; int a; int b; }e; e.a = 1; e.b = 2; e.in.x = e.a * e.b; e.in.y = e.a + e.b; printf(“%d %d %d”,e.a,e.in.x, e.in.y); } 3. 假设磁盘上有三个文本文件,其文件名和内容分别为: 文件名 内容 f1 aaa! f2 bbb! f3 ccc!
四、 编程题(30分) 已知head指向一个带头结点的单向链表, 链表中每个结点包含整型数据域(data) 和指针域(next),链表中各结点按数据域递增有序链接。(1)实现函数删除链表 中数据域相同的结点, 使之只保留一个。(2)实现函数将其倒序递减排列(不能使 用额外的存储空间)。 typedef int datatype; typedef struct ode * next; }linklist; …… linklist * purge(linklist *head); linklist * invert(linklist *head); //请实现这两个函数
结构体与共同体、文件
一、选择题 (20分,每题10分) 1. 若有以下说明和语句, 则在scanf函数调用语句中对结构体变量成员的不正确 引用方式是( )。 struct pupil { char name[20]; int age; int sex; }pup[5],*p; p=pup; A. scanf(“%s”, pup[0].name); B. sanf(“%d”, &pup[0].age); C. scanf(“%d”,&(p->sex)); D. scanf(“%d”, &p->age);
磁盘上还有以下C语言源程序,经编译、连接后生成可执行文件,文件名为 ex12.exe。 #include<stdio.h> main(int argc, char * argv[]) { FILE * fp; void sub( ); int i=1; while(--argc>0) if((fp=fopen(argv[i++],”r”)) == NULL) { printf(“count open file!\n”); exit(1); } else { sub(fp); fclose(fp);} } void sub (FILE * fp) { char c; while((c=getc(fp))!=’!’) putchat(c+1); } 若在DOS提示符下键入:ex12 f1 f2 f3 <回车>,则程序的运行结果是 _____________。
评分标准: 代码风格:0-5(缩进 2: 、注释 1、空行 1、见名知意 1) 周详:0-5 没输入提示(-2)有没有判断空链表的情况和 free 被删除的结点 功能正确:0-20 两个函数分别 10 分,
2.设有如下定义成的链表,则值为 6 的表达式是( )。 struct st { int n; struct st *next ; } a[3]={5,&a[1],7,&a[2],9,NULL}; struct st *p=&a; A. p++->n B. p->n++ C. (*p).n++ D. ++p->n
二、 填空题(20分,每空4分) 1. 以下min3函数的功能是: 计算循环链表first中每3个相邻结点数据域中的和, 并返回其中最小值。请在【 】内填入正确内容。
struct node { int data; struct node * link; }; int min3(struct node *first) { struct node *p = first; If(first == NULL) return 0; int m, m3 = p->data + p->link->data + p->link->link->data;
相关主题