任务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();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$