首页 理论教育 C语言实践教程计算班级总成绩、学生信息排序

C语言实践教程计算班级总成绩、学生信息排序

时间:2023-11-01 理论教育 版权反馈
【摘要】:A.4B.5C.6D.8以下对枚举类型名的定义中正确的是()。期末考试结束,已知某班学生共参加3门课程考试,要求计算该班学生的总成绩,并请将每位学生信息按总成绩降序排列输出。凡报到3者退出圈子。A.8B.1C.4D.13以下正确的描述是()。A.13B.14C.208D.209设有以下语句:则z的二进制值是()。A.00010100B.00011011C.00011100D.00011000当说明一个结构体变量时系统分配给它的内存是()。

C语言实践教程计算班级总成绩、学生信息排序

一、思考题

1.简答题

(1)比较结构体与数组的异同。

(2)若有定义

写出引用结构变量dd的成员dd.day的其他两种描述形式。

2.读程序片段写输出结果

(1)程序片段

写出此程序片段的输出结果。

(2)程序片段

写出此程序片段的输出结果。

(3)程序片段

写出此程序片段的输出结果。

(4)程序片段

写出此程序片段的输出结果。

二、练习题

1.选择题

(1)若有如下说明,则叙述是正确的是( )。

A.结构体变量a与结构体成员a同名,定义是非法的

B.程序只在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体st分配6个字节存储单元

D.类型名st可以通过extern关键字提前引用(即引用在前,说明在后)

(2)设有如下定义

则以下对data中的a域引用的正确引用是( )。

A.(*p).data.a B.(*p).a

C.p->data.a D.p.data.a

(3)有以下结构体说明、变量定义和赋值语句

则以下scanf函数调用语句中错误引用结构体变量成员的是( )。

A.scanf("%s",s[0].name); B.scanf("%d",&s[0].age);

C.scanf("%c",&(p->sex)); D.scanf("%d",p->age);

(4)有以下结构体说明和变量定义,如图7-3所示:

图7-3

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是( )。

A.p->next=q->next; B.p->next=p->next->next;

C.p->next=r; D.p=q

(5)若有以下说明和定义

以下叙述中错误的是( )。

A.data的每个成员起始地址都相同

B.变量data所占的内存字节数与成员c所占字节数相等

C.程序段data.a=5;printf("%f\n",data.c);输出结果为5.000000

D.data可以作为函数的实参

(6)若有以下定义和语句

则以下语句正确的是( )。

A.x=10.5; B.x.c=66;

C.y=x; D.printf("%d\n",x);

(7)若有以下定义,则变量a所占的内存字节数是( )。

A.4 B.5

C.6 D.8

(8)以下对枚举类型名的定义中正确的是( )。

A.enum a={one,two,three};

B.enum a{one=9,two=-1,three};

C.enum a={"one","two","three"};

D.enum a{"one","two","three"};

(9)以下叙述中错误的是( )。

A.可以通过typedef增加新的类型

B.可以用typedef将已存在的类型用新的名字来代表

C.用typedef定义新的类型名后,原有类型名仍有效

D.用typedef可以为各种类型起别名,但不能为变量起别名

(10)以下对结构体类型变量td的定义中,错误的是( )。

2.阅读程序题

(1)以下程序执行后的输出结果是( )。

(2)以下程序执行后的输出结果是( )。

(3)以下程序执行后的输出结果是( )。

(4)以下程序执行后的输出结果是( )。

(5)以下程序执行后的输出结果是( )。

(6)以下程序执行后的输出结果是( )。

3.编程题

(1)某单位进行选举,共10位候选人,编写一个统计每人得票数的程序,要求每个人的信息包含候选人姓名和获得总票数。

(2)期末考试结束,已知某班学生共参加3门课程考试,要求计算该班学生的总成绩,并请将每位学生信息(包括总成绩)按总成绩降序排列输出。

(3)13个学生围成一个圈子,从第一个同学开始顺序报号1、2、3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号,请用链表实现。

(4)有两个链表a和b,设结点中包含学号和姓名,要求从a链表中删去与b链表中有相同学号的那些结点,并将整理后的a链表与b链表按学号顺序合并为一个链表。

三、测试题

1.选择题

(1)设有以下说明语句

则下面的叙述不正确的是( )。

A.struct是结构体类型的关键字

B.struct stu是用户定义的结构体类型

C.stutype是用户定义的结构体类型名

D.a和b都是结构体成员名

(2)若以下定义:

且变量a和b之间已有如图7-4所示的链表结构:

图7-4 链表结构

指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是( )。

A.a.next = c; c.next = b;

B.p.next = q; q.next = p.next;

C.p->next = &c; q->next = p->next;

D.(*p).next = q; (*q).next = &b;

(3)已知:

则sizeof(test)的值是( )。

A.8 B.1

C.4 D.13

(4)以下正确的描述是( )。(www.xing528.com)

A.对共用体初始化时,只能对第一个成员进行初始化,每一瞬时起作用的成员是最后一次为其赋值的成员

B.结构体可以比较,但不能将结构体类型作为函数返回值类型

C.函数定义可以嵌套

D.关键字typedef用于定义一种新的数据类型

设有如下定义:

(5)若要使P指向data中的a域,正确的赋值语句是( )。

A.p = &a;

B.p = data.a;

C.p = &data.a;

D.*p = data.a;

(6)以下对结构体类型变量的定义中,不正确的是( )。

(7)有如下程序段:

程序的输出结果是( )。

A.13 B.14

C.208 D.209

(8)设有以下语句:

则z的二进制值是( )。

A.00010100 B.00011011

C.00011100 D.00011000

(9)当说明一个结构体变量时系统分配给它的内存是( )。

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量

(10)在位运算中,操作数左移一位,其结果相当于( )。

A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

(11)有如下程序段:

程序的输出结果是( )。

A.10 20 20 B.50 60 21

C.51 60 21 D.60 70 31

(12)有下列运算符:~,&,<<,>>, |,^,则运算的优先顺序是( )。

A.~,&, |,<<,>>,^ B.~,<<,>>,&, |,^

C.~,<<,>>,^, &,| D.~,<<,>>,&,^, |

(13)若有以下程序段:

以下选项中值为2的是( )。

A.*(p++)->next

B.*(++p)->next

C.(*p).next

D.(p++)->next

(14)以下叙述中错误的是( )。

A.函数可以返回指向结构体变量的指针

B.只要类型相同,结构体变量间可以整体赋值

C.函数的返回值类型不能是结构体类型

D.可以通过指针变量来访问结构体变量的任何成员

(15)若s是int类型变量,则以下语句的输出结果是( )。

s = 32;

s ^= 32;

printf(“%d”, s);

A.-1 B.32

C.1 D.0

(16)以下叙述中错误的是( )。

A.typedef的作用是用一个新的标识符来代表已存在的类型名

B.typedef说明的新类型名必须使用大写字母,否则会出编译错误

C.可以用typedef说明的新类型名来定义变量

D.用typedef可以说明一种新的类型名

(17)有以下程序

输出结果是( )。

A.20 B.11

C.10 D.21

(18)若有以下程序段:

输出结果是( )。

A.3 B.5

C.6 D.4

(19)若有以下的说明和定义:

则以下叙述中正确的是( )。

A.语句*p->s++;等价于(*p)->s++;

B.语句++p->a;的效果是使p增1

C.(p++)->a与p++->a都是合法的表达式,但二者不等价

D.语句++p->a;的效果是使成员a增1

(20)若有以下程序段:

以下表达式中,值为11的是( )。

A.*pt->y B.(pt++)->x

C.pt->x D.++pt->x

2.填空题

(1)下面程序的运行结果是:( )。

(2)下面程序的运行结果是:( )。

(3)下面程序的运行结果是:( )。

(4)下面程序的运行结果是:( )。

(5)下面程序的运行结果是:( )。

(6)下面程序的运行结果是:( )。

(7)下面程序的运行结果是:( )。

(8)下面程序的运行结果是:( )。

(9)函数min的功能是:在带有头结点的单向链表中,查找结点数据域最小的值,作函数值返回。请补全程序。

(10)函数initial创建一个不带头结点环形链表,第i个结点的数据域值为i,函数返回链表的头指针。请补全程序。

3.编程题

(1)staff结构体定义如下:

结构体数组st内存有某单位十位职工的姓名和年龄,试编程输出年龄最大职工的姓名和年龄。

(2)有10个学生,每个学生的信息包括学号、姓名、三门课的成绩,数据从键盘输入,并按每个学生的三门课平均成绩从高到低分别打印出这10个学生的学号、姓名及个人平均成绩。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈