任务40:枚举数据类型、使用typedef定义类型 《编程语言-C语言》45分钟专题训练

| 2份
| 30页
| 98人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第40卷: 枚举数据类型、使用typedef定义类型 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列选项中,能定义s为合法结构体变量的是( ) A.typedef struct abc{double a;char b[10];}s; B.struct{double a;char b[10];}s; C.struct ABC{double a;char b[10];};ABC s; D.typedef ABC{double a;char b[10];};ABC s; 【答案】B 2.下列选项中,对typedef的叙述中,不正确的一项是( ) A.用typedef可以定义各种类型名,但不能用来定义变量 B.用typedef可以增加新类型 C.用typedef只是将已经存在的类型用一个新的标识符来代替 D.使用typedef有利于程序的通用和移植 【答案】B 3.设有枚举类型定义:enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};,则枚举量Fortran的值为( ) A.4 B.7 C.102 D.103 【答案】C 4.下列有关typedef叙述中,不正确的一项是( ) A.可以通过typedef增加新的数据类型 B.可以用typedef将已经存在的类型用一个新的名字来代表 C.用typedef定义新的类型名后,原有类型名仍然有效 D.用typedef可以为各种类型起别名,但不能为变量起别名 【答案】A 5.设有以下程序段,则下列叙述中,正确的一项是( ) typedef struct NODE {int num;struct NODE *next;}OLD; A.该程序段中的说明非法 B.NODE是一个结构体类型 C.OLD是一个结构体类型 D.OLD是一个结构体变量 【答案】C 6.下列选项中,不能正确把c1定义为结构体变量的是( ) A.typedef struct{int red; int green; int blue;}COLOR;COLOR c1; B.struct color c1{int red; int green; int blue;}; C.struct color {int red; int green; int blue;}c1; D.struct{int red; int green; int blue;}c1; 【答案】B 7.设有定义语句:typedef struct S{int g;char h;}T;,则下列叙述中,正确的一项是( ) A.可以使用S定义结构体变量 B.可以使用T定义结构体变量 C.S是struct类型的变量 D.T是struct S类型的变量 【答案】B 8.设有定义语句:typedef struct ST{long a;int b;char c[2];}NEW;,则下列叙述中,不正确的一项是( ) A.该结构体变量占用的存储空间是8个字节 B.struct ST xx; xx是一个结构体变量 C.NEW yy; yy是一个结构体变量 D.NEW是一个结构体变量 【答案】D 9.下列选项中,对结构体变量a1的定义中,不正确的一项是( ) A.typedef struct aa{int n;float m;}AA; AA a1; B.struct aa{int n; float m;};struct aa a1; C.struct {int n;float m;}aa;struct aa a1; D.struct {int n;float m;}a1; 【答案】C 10.下列程序的输出是( ) main() {enum team{a,b=4,c,d=c+10}; printf("%d %d %d %d ",a,b,c,d);getch();} A.0 1 2 3 B.0 4 0 4 C.0 4 5 15 D.1 4 5 15 【答案】C 11.下列叙述中,不正确的是( ) A.枚举变量只能取对应枚举类型的枚举元素表中的元素 B.可以在定义枚举类型时对枚举元素进行初始化 C.枚举元素表中的元素有先后次序,可以进行比较 D.枚举元素的值可以是整数或字符串 【答案】D 12.设有定义:enum color{red,yellow=4,white,black};,则执行语句:printf(“%d”,white);后的输出是( ) A.0 B.1 C.5 D.6 【答案】C 13.设有定义:typedef struct {int a;char c;}w;,则下列叙述中,正确的一项是( ) A.编译后系统为w分配5个字节 B.编译后系统为w分配6个字节 C.编译后系统为w分配8个字节 D.编译后系统不为w分配存储空间 【答案】D。w是一个自定义类型,不是变量。 14.设有定义:typedef struct TT{char c;int a[4]}CC;,则下列叙述中,正确的一项是( ) A.CC是struct TT类型的变量 B.TT是struct类型的变量 C.可以用TT定义结构体变量 D.可以用CC定义结构体变量 【答案】D 15.设有定义:typedef struct data{int year;int month;int day;}DATA;,则下列叙述中,不正确的一项是( ) A.DATA是用户定义的结构体变量 B.struct data是用户定义的结构体类型 C.DATA是用户说明的新结构体类型名 D.struct是结构体类型的关键字 【答案】A 16.设有定义:typedef int *T;T a[20];,则下列选项与定义中的a类型完全相同的是( ) A.int *a[20]; B.int (*a)[20]; C.int a[20]; D.int **a[20]; 【答案】A 17.设有定义:typedef int T[10];T *a[20];,则下列选项中,与之完全等价的说明语句是( ) A.int *a[20][10]; B.int *a[20]; C.int *a[10]; D.int *a[10][20]; 【答案】A 18.若有定义和声明:typedef struct{int n;struct{int y,m,d;}data;}PERO;则下列选项中,不能够定义结构体数组并赋初值的语句是( ) A.PERO x[2]={1,2,3,4,5,6,7,8}; B.PERO x[2]={{1,2,3,4},{5,6,7,8}}; C.PERO x[2]={1,{2,3,4},5,{6,7,8}}; D.PERO x[2]={{1},2,3,4,{5},6,7,8}; 【答案】D 19.执行以下程序段的输出结果是( ) typedef union{long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; void main() {printf("%d ",sizeof(them));getch();} A.8 B.16 C.24 D.32 【答案】B 20.若有以下类型说明,叙述正确的是( ) typedef sturct{ int num; char *name; int score;} STU, *PSTU A.STU 是变量名 B.PSTU是指向结构体类型STU的指针类型名 C.PSTU是变量名 D.类型说明语句有错误 【答案】A 21.执行以下程序段的输出结果是( ) typedef struct student{long sno;float score;}STU; main( ) { STU a={2001,95},b={2002,90},c={2003,95},d,*p=&d; d=a;if(a.sno>b.sno) d=b; if(c.score<d.score) d=c; printf("%d ",d.sno);getch();} A.2001 B.2002 C.2003 D.0 【答案】A 22.执行以下程序段的输出结果是( ) main() {enum name{zhao=1,qian,sun,li}man; man=qian; switch(man) {case 0:printf("people ");break; case 1:printf("man ");break; case 2:printf("woman ");break; default:printf("error! ");break;}getch();} A.people B.man C.woman D.error! 【答案】C 23.执行以下程序段时输入4<回车>,则输出结果是( ) main() {enum week{Mon,Tue,Wed,Thu,Fri,Sat,Sun}; enum week day; scanf("%d",&day); printf("It is %d ",day);getch();} A.It is Thu B.It is Fri C.It is Wed D.It is 4 【答案】D 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> typedef int INT; main( ) {INT a,b; a=5;b=6; printf("a=%d,b=%d ",a,b); {float INT;INT=3.0; printf("2*INT=%.2f ",2*INT);} getch();} 【答案】 a=5,b=6 2*INT=6.00 25.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> enum coin{penny,nickel,dime,quarter,half_dollar,dollar}; char *name[]={"penny","nickel","dime","quarter", "half-dollar","dollar"}; main( ) {enum coin money1,money2; money1=dime; money2=dollar; printf("%d %d ",money1,money2); printf("%s %s ",name[(int)money1],name[(int)money2]); getch();} 【答案】2 5 dime dollar 26.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char sex; float score[2];}STU; void f(STU *a) {strcpy(a->name,"wang"); a->sex='A'; a->score[1]=95.5;} main() {STU c={"yang",'B',98.5,92.0},*d=&c; f(d); printf("%s,%c,%2.0f,%2.0f ",d->name,c.sex,c.score[0],c.score[1]); getch();} 【答案】wang,A,99,96 27.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char sex; float score[2];}STU; STU f(STU a) {STU b={"zhao",'a',85,94}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; return a;} main() {STU c={"yang",'B',98.5,92.0},d; d=f(c); printf("%s,%c,%2.0f,%2.0f ",d.name,d.sex,d.score[0],d.score[1]); printf("%s,%c,%2.0f,%2.0f ",c.name,c.sex,c.score[0],c.score[1]); getch();} 【答案】 zhao,a,85,94 yang,B,99,92 28.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char gender; float score;}STU; void f(STU *c) {strcpy(c->name,"lin"); c->gender='f'; c->score=350;} main() {STU a={"yang",'B',390},b; b=a; f(&b); printf("%s,%c,%d ",a.name,a.gender,a.score); printf("%s,%c,%d ",b.name,b.gender,b.score); getch();} 【答案】 yang,B,0 lin,f,0 29.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct student{ char name[10]; long sno; float score;}STU; main( ) { STU a={"chengdu",2001,95},b={"Shangxian",2002,90}, c={"guilin",2003,98},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf("%ld%s ",d.sno,p->name); getch();} 【答案】2003guilin 30.以下程序的运行结果是( ) #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> typedef struct stu {char *name,gender; int score;}STU; void f(char *p) {p=(char *)malloc(10); strcpy(p,"cheng");} main() {STU a={NULL,'m',390},b; a.name=(char *)malloc(10); strcpy(a.name,"zhao"); b=a; f(b.name); b.gender='f'; b.score=650; printf("%s,%c,%d,",a.name,a.gender,a.score); printf("%s,%c,%d,",b.name,b.gender,b.score); getch();} 【答案】zhao,m,390,zhao,f,650, 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.已知 head 指向一个带头结点的单向链表,链表中每个结点包含字符型数据域(data)和指针域(next)。函数Insert1实现,在值为 a 的结点前插入值为 key 的结点,若没有值为 a 的结点,则插在链表最后。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include <stdlib.h> L3 #include <conio.h> L4 typedef char datatype; L5 typedef struct node L6 {datatype data; L7 struct node *next;}linklist; L8 int INSERT1(linklist *head,datatype a,datatype key) L9 {linklist *s,*p,*q; L10 s= (struct node*)malloc(sizeof(linklist)); L11 s->data=key; L12 q=head; L13 p=head->next; L14 if(p=NULL) L15 { s->next=p; L16 q->next=s; L17 return 0;} L18 while((p->data!=a)||(p->next!=NULL)) L19 { q=p; L20 p=p->next;} L21 if(p->next==a) L22 { s->next=p; L23 q->next=s;} L24 else{ s->next=NULL; L25 p->next=s;} L26 return head;} 答案: L14 if(p==NULL) L18 while((p->data!=a)&&(p->next!=NULL)) L21 if(p->data==a) 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:口袋中有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。请填空。 #include <stdio.h> #include <conio.h> main() {enum color{red,yellow,blue,white,black}; enum color i,j,k,pri; int n,loop; n=0; for(i=red;i<=black;i++) for(j=red;j<=black;j++) if(【1】) {for(k=red;k<=black;k++) if(【2】) {n=n+1; printf("%4d",n); for(loop=1;loop<=3;loop++) {switch(【3】) {case 1:pri=i;break; case 2:pri=j;break; case 3:pri=k;break; default:break;} switch(【4】) {case red:printf("%10s","red");break; case yellow:printf("%10s","yellow");break; case blue:printf("%10s","blue");break; case white:printf("%10s","white");break; case black:printf("%10s","black");break; default:break; }} printf(" ");}} printf(" total:%5d ",n); getch();} 答案:①i!=j ②(k!=i)&&(k!=j) ③loop ④pri 33. 下列程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点赋值,函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> typedef struct aa {int date; struct aa *next; }NODE; int fun(NODE *h) {int sum=0; NODE *p; p=【1】; while(p) {if(【2】) sum+=p->date; p=p->next;} return sum;} NODE *creatlink(int n) {NODE *h,*p,*s; int i; h=p=【3】; for(i=1;i<n;i++) {s=(NODE*)malloc(sizeof(NODE)); s->date=rand()%16; s->next=p->next; 【4】; p=p->next;} p->next=NULL; return h;} void outlink(NODE *h) {NODE *p; p=h->next; printf(" The LIST: HEAD"); while(p) {printf("->%d",p->date);p=p->next;} printf(" ");} main() {NODE *head; int sum; system("CLS"); head=creatlink(10); outlink(head); sum=fun(head); printf(" SUM=%d ",sum); getch();} 答案:①h->next ②p->date%2==0 ③(NODE*)malloc(sizeof(NODE)) ④p->next=s 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第40卷: 枚举数据类型、使用typedef定义类型 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列选项中,能定义s为合法结构体变量的是( ) A.typedef struct abc{double a;char b[10];}s; B.struct{double a;char b[10];}s; C.struct ABC{double a;char b[10];};ABC s; D.typedef ABC{double a;char b[10];};ABC s; 2.下列选项中,对typedef的叙述中,不正确的一项是( ) A.用typedef可以定义各种类型名,但不能用来定义变量 B.用typedef可以增加新类型 C.用typedef只是将已经存在的类型用一个新的标识符来代替 D.使用typedef有利于程序的通用和移植 3.设有枚举类型定义:enum language{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};,则枚举量Fortran的值为( ) A.4 B.7 C.102 D.103 4.下列有关typedef叙述中,不正确的一项是( ) A.可以通过typedef增加新的数据类型 B.可以用typedef将已经存在的类型用一个新的名字来代表 C.用typedef定义新的类型名后,原有类型名仍然有效 D.用typedef可以为各种类型起别名,但不能为变量起别名 5.设有以下程序段,则下列叙述中,正确的一项是( ) typedef struct NODE {int num;struct NODE *next;}OLD; A.该程序段中的说明非法 B.NODE是一个结构体类型 C.OLD是一个结构体类型 D.OLD是一个结构体变量 6.下列选项中,不能正确把c1定义为结构体变量的是( ) A.typedef struct{int red; int green; int blue;}COLOR;COLOR c1; B.struct color c1{int red; int green; int blue;}; C.struct color {int red; int green; int blue;}c1; D.struct{int red; int green; int blue;}c1; 7.设有定义语句:typedef struct S{int g;char h;}T;,则下列叙述中,正确的一项是( ) A.可以使用S定义结构体变量 B.可以使用T定义结构体变量 C.S是struct类型的变量 D.T是struct S类型的变量 8.设有定义语句:typedef struct ST{long a;int b;char c[2];}NEW;,则下列叙述中,不正确的一项是( ) A.该结构体变量占用的存储空间是8个字节 B.struct ST xx; xx是一个结构体变量 C.NEW yy; yy是一个结构体变量 D.NEW是一个结构体变量 9.下列选项中,对结构体变量a1的定义中,不正确的一项是( ) A.typedef struct aa{int n;float m;}AA; AA a1; B.struct aa{int n; float m;};struct aa a1; C.struct {int n;float m;}aa;struct aa a1; D.struct {int n;float m;}a1; 10.下列程序的输出是( ) main() {enum team{a,b=4,c,d=c+10}; printf("%d %d %d %d ",a,b,c,d);getch();} A.0 1 2 3 B.0 4 0 4 C.0 4 5 15 D.1 4 5 15 11.下列叙述中,不正确的是( ) A.枚举变量只能取对应枚举类型的枚举元素表中的元素 B.可以在定义枚举类型时对枚举元素进行初始化 C.枚举元素表中的元素有先后次序,可以进行比较 D.枚举元素的值可以是整数或字符串 12.设有定义:enum color{red,yellow=4,white,black};,则执行语句:printf(“%d”,white);后的输出是( ) A.0 B.1 C.5 D.6 13.设有定义:typedef struct {int a;char c;}w;,则下列叙述中,正确的一项是( ) A.编译后系统为w分配5个字节 B.编译后系统为w分配6个字节 C.编译后系统为w分配8个字节 D.编译后系统不为w分配存储空间 14.设有定义:typedef struct TT{char c;int a[4]}CC;,则下列叙述中,正确的一项是( ) A.CC是struct TT类型的变量 B.TT是struct类型的变量 C.可以用TT定义结构体变量 D.可以用CC定义结构体变量 15.设有定义:typedef struct data{int year;int month;int day;}DATA;,则下列叙述中,不正确的一项是( ) A.DATA是用户定义的结构体变量 B.struct data是用户定义的结构体类型 C.DATA是用户说明的新结构体类型名 D.struct是结构体类型的关键字 16.设有定义:typedef int *T;T a[20];,则下列选项与定义中的a类型完全相同的是( ) A.int *a[20]; B.int (*a)[20]; C.int a[20]; D.int **a[20]; 17.设有定义:typedef int T[10];T *a[20];,则下列选项中,与之完全等价的说明语句是( ) A.int *a[20][10]; B.int *a[20]; C.int *a[10]; D.int *a[10][20]; 18.若有定义和声明:typedef struct{int n;struct{int y,m,d;}data;}PERO;则下列选项中,不能够定义结构体数组并赋初值的语句是( ) A.PERO x[2]={1,2,3,4,5,6,7,8}; B.PERO x[2]={{1,2,3,4},{5,6,7,8}}; C.PERO x[2]={1,{2,3,4},5,{6,7,8}}; D.PERO x[2]={{1},2,3,4,{5},6,7,8}; 19.执行以下程序段的输出结果是( ) typedef union{long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; void main() {printf("%d ",sizeof(them));getch();} A.8 B.16 C.24 D.32 20.若有以下类型说明,叙述正确的是( ) typedef sturct{ int num; char *name; int score;} STU, *PSTU A.STU 是变量名 B.PSTU是指向结构体类型STU的指针类型名 C.PSTU是变量名 D.类型说明语句有错误 21.执行以下程序段的输出结果是( ) typedef struct student{long sno;float score;}STU; main( ) { STU a={2001,95},b={2002,90},c={2003,95},d,*p=&d; d=a;if(a.sno>b.sno) d=b; if(c.score<d.score) d=c; printf("%d ",d.sno);getch();} A.2001 B.2002 C.2003 D.0 22.执行以下程序段的输出结果是( ) main() {enum name{zhao=1,qian,sun,li}man; man=qian; switch(man) {case 0:printf("people ");break; case 1:printf("man ");break; case 2:printf("woman ");break; default:printf("error! ");break;}getch();} A.people B.man C.woman D.error! 23.执行以下程序段时输入4<回车>,则输出结果是( ) main() {enum week{Mon,Tue,Wed,Thu,Fri,Sat,Sun}; enum week day; scanf("%d",&day); printf("It is %d ",day);getch();} A.It is Thu B.It is Fri C.It is Wed D.It is 4 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> typedef int INT; main( ) {INT a,b; a=5;b=6; printf("a=%d,b=%d ",a,b); {float INT;INT=3.0; printf("2*INT=%.2f ",2*INT);} getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> enum coin{penny,nickel,dime,quarter,half_dollar,dollar}; char *name[]={"penny","nickel","dime","quarter", "half-dollar","dollar"}; main( ) {enum coin money1,money2; money1=dime; money2=dollar; printf("%d %d ",money1,money2); printf("%s %s ",name[(int)money1],name[(int)money2]); getch();} 26.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char sex; float score[2];}STU; void f(STU *a) {strcpy(a->name,"wang"); a->sex='A'; a->score[1]=95.5;} main() {STU c={"yang",'B',98.5,92.0},*d=&c; f(d); printf("%s,%c,%2.0f,%2.0f ",d->name,c.sex,c.score[0],c.score[1]); getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char sex; float score[2];}STU; STU f(STU a) {STU b={"zhao",'a',85,94}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; return a;} main() {STU c={"yang",'B',98.5,92.0},d; d=f(c); printf("%s,%c,%2.0f,%2.0f ",d.name,d.sex,d.score[0],d.score[1]); printf("%s,%c,%2.0f,%2.0f ",c.name,c.sex,c.score[0],c.score[1]); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct {char name[9]; char gender; float score;}STU; void f(STU *c) {strcpy(c->name,"lin"); c->gender='f'; c->score=350;} main() {STU a={"yang",'B',390},b; b=a; f(&b); printf("%s,%c,%d ",a.name,a.gender,a.score); printf("%s,%c,%d ",b.name,b.gender,b.score); getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include<string.h> #include <conio.h> typedef struct student{ char name[10]; long sno; float score;}STU; main( ) { STU a={"chengdu",2001,95},b={"Shangxian",2002,90}, c={"guilin",2003,98},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf("%ld%s ",d.sno,p->name); getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> typedef struct stu {char *name,gender; int score;}STU; void f(char *p) {p=(char *)malloc(10); strcpy(p,"cheng");} main() {STU a={NULL,'m',390},b; a.name=(char *)malloc(10); strcpy(a.name,"zhao"); b=a; f(b.name); b.gender='f'; b.score=650; printf("%s,%c,%d,",a.name,a.gender,a.score); printf("%s,%c,%d,",b.name,b.gender,b.score); getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.已知 head 指向一个带头结点的单向链表,链表中每个结点包含字符型数据域(data)和指针域(next)。函数Insert1实现,在值为 a 的结点前插入值为 key 的结点,若没有值为 a 的结点,则插在链表最后。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include <stdlib.h> L3 #include <conio.h> L4 typedef char datatype; L5 typedef struct node L6 {datatype data; L7 struct node *next;}linklist; L8 int INSERT1(linklist *head,datatype a,datatype key) L9 {linklist *s,*p,*q; L10 s= (struct node*)malloc(sizeof(linklist)); L11 s->data=key; L12 q=head; L13 p=head->next; L14 if(p=NULL) L15 { s->next=p; L16 q->next=s; L17 return 0;} L18 while((p->data!=a)||(p->next!=NULL)) L19 { q=p; L20 p=p->next;} L21 if(p->next==a) L22 { s->next=p; L23 q->next=s;} L24 else{ s->next=NULL; L25 p->next=s;} L26 return head;} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:口袋中有红、黄、蓝、白、黑5种颜色的球若干个,每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。请填空。 #include <stdio.h> #include <conio.h> main() {enum color{red,yellow,blue,white,black}; enum color i,j,k,pri; int n,loop; n=0; for(i=red;i<=black;i++) for(j=red;j<=black;j++) if(【1】) {for(k=red;k<=black;k++) if(【2】) {n=n+1; printf("%4d",n); for(loop=1;loop<=3;loop++) {switch(【3】) {case 1:pri=i;break; case 2:pri=j;break; case 3:pri=k;break; default:break;} switch(【4】) {case red:printf("%10s","red");break; case yellow:printf("%10s","yellow");break; case blue:printf("%10s","blue");break; case white:printf("%10s","white");break; case black:printf("%10s","black");break; default:break; }} printf(" ");}} printf(" total:%5d ",n); getch();} 33. 下列程序的功能是:建立一个带头结点的单向链表,并用随机函数为各结点赋值,函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> typedef struct aa {int date; struct aa *next; }NODE; int fun(NODE *h) {int sum=0; NODE *p; p=【1】; while(p) {if(【2】) sum+=p->date; p=p->next;} return sum;} NODE *creatlink(int n) {NODE *h,*p,*s; int i; h=p=【3】; for(i=1;i<n;i++) {s=(NODE*)malloc(sizeof(NODE)); s->date=rand()%16; s->next=p->next; 【4】; p=p->next;} p->next=NULL; return h;} void outlink(NODE *h) {NODE *p; p=h->next; printf(" The LIST: HEAD"); while(p) {printf("->%d",p->date);p=p->next;} printf(" ");} main() {NODE *head; int sum; system("CLS"); head=creatlink(10); outlink(head); sum=fun(head); printf(" SUM=%d ",sum); getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务40:枚举数据类型、使用typedef定义类型 《编程语言-C语言》45分钟专题训练-第1页
1
任务40:枚举数据类型、使用typedef定义类型 《编程语言-C语言》45分钟专题训练-第2页
2
任务40:枚举数据类型、使用typedef定义类型 《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。