江苏计算机C语言结构体与共同体考核 |
江苏省计算机等级考试辅导C 第三次授课资料 考点1:结构体 例题:已知有结构体定义和变量声明如下:(2008秋) struct student {char name[20]; int score; struct student *h; }stu, *p; int *q; 以下选项中错误的是_________ A.p=&stu; B.q=&stu.score; C.scanf(“%s%d”,&stu); D.stu.h=p; 例题:以下程序运行时输出结果的第一行是________,第二行是__________ #include <stdio.h> struct s {int x,*y; }*p; int d[5]={10,20,30,40,50}; struct s a[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; void main() {p=a; printf(“%5d”,p->x++); printf(“%5d\n”,p->x); printf(“%5d”,*p->y); printf(“%5d\n”,*++p->y); } 考点2:处理链表 例题:以下程序的功能是:函数struct node *insert(struct node *head, struct node *p)将p指向的结点作为首结点插入head指向的链表中,main函数接收从键盘输入的一行字符,每接收一个字符后,申请一个新节点保存该字符,并调用insert函数将新结点插入链表中,最后从表头开始一次输出该链表个结点成员c的值,试完善程序以达到要求的功能 #include <stdio.h> #include <stdlib.h> struct node {char c; struct node *next; }; void main() {struct node *insert(struct node *head, struct node *p); char ch; struct node *head,*p; head=NULL; while((ch=getchar())!=’\n’) {p=(struct node *)malloc(sizeof(struct node)); _______________=ch; p->next=NULL; __________________; } p=head; while(p!=NULL) {printf(“%c”,p->c); ________________; } } struct node *insert(struct node *head, struct node *p) {if(head= =NULL) head=p; else {______________________--; head=p; } return head; } 考点 3:共用体: 考点4:枚举类型 例题:已知”enum ab{a,b=5,c,d}”,枚举常量d的值是___________ 考点5:用typedef定义类型 例题:以下结构变量stu1的声明形式中,错误的是__________ A.typedef struct stu{char name[10];float score;} STU; STU stu1; B.#define STU struct stu STU {char name[10];float score;}stu1; C.struct stu{char name[10]; float score;} stu1; D.struct stu{char name[10];float score;} STU; STU stu1; 第十二章:文件 文件指针是很重要的一个概念,定义文件指针的格式: 考点1:文件打开 FILE *文件指针名; 例如: FILE *fp; fp=fopen(“文件名”,”打开文件方式”); 文件的打开: "r"(只读) "r+"(为读/写方式打开已存在的文本文件) "w"(只写) "w+"(以读/写方式新建文本文件) "a"(追加) "a+"(以读/写方式将数据追加到文件尾) “rb+”(读写) 为读写打开一个二进制文件 “wb+”为读写建立一个二进制文件 考点2:文件关闭 fclose(文件指针) 考点3:文件的读写函数 fputc函数:将一个字符写到磁盘文件上 fgetc函数:从指定的文件读入一个字符 fread函数:用来读一个数据块,fwrite函数:用来写一个数据块 fprintf函数:格式化写函数,fscanf函数:格式化读函数,针对的不是终端而是磁盘文件 rewind函数:使位置指针重新返回文件的开头 fseek函数:改变文件的位置指针 |