内容正文:
《编程语言基础——C语言》高等教育出版社(第五版)
第七章 结构体和共用体 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题4分,共60分)
1.设有以下说明语句:
struct ex;
{int x;
float y;
char z;
}example;
则下面的叙述中不正确的是( )
A.struct式结构体类型的关键字 B.example是结构体类型名
C.x,y,z都是结构体成员名 D.struct ex是结构体类型名
2.设有以下说明语句:
typedef struct data
{int n;
char ch[8];
}PER;
则下面的叙述中正确的是( )
A.struct data是结构体变量名
B.PER是结构体类型名
C.typedef struct是结构体类型
D.sruct是结构体类型名
3.若有如下定义
struct data
{int i;
char ch;
double f;}b;
则结构体变量b占用内存的字节数是( )
A.13 B.3 C.8 D.11
4.设有如下定义:
struct sk;
{int a;
float b;
}data,*p;
若有p=&data,则对data中的成员a的正确引用是( )
A.(*p).data.a B.(*p).a
C.p->data.a D.p.data.a
5.下对结构体变量stu1中成员age的非法引用的是( )
struct student
{int age;
int num;
}stu1,*p=&stu1;
A.stu1.age B.student.age
C.p->age D.(*p).age
6.有以下说明和语句
struct worker
{int no;
char *name;
}work,*p=&work;则以下引用方式不正确的是( )
A.work.no B.(*p).no
C.p->no D.work->no
7.若有以下结构体和变量定义,则以下引用方式不正确的是( )
struct worker
{int sno;
char *name;
}work,*p=&work;
A.work.sno B.(*p).name
C.p->sno D.work->sno
8.已知有如下定义:
struct a
{char x;
double y;
}data,*t;,若有t=&data,则对data中的成员的正确引用是( )
A.(*t).data.x B.(*t).x
C.t->data.x D.t.data.x
9.下列程序的输出结果是( )
#include<stdio.h>
struct abc
{int a,b,c;};
main(){
struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].a+s[1].b;
printf("%d
",t);}
A.5 B.6 C.7 D.8
10.下列程序的输出结果是( )
#include<stdio.h>
main(){
struct cmplx
{int x;
int y;
}cnum[2]={1,3,2,7};
printf("%d
",cnum[0].y/cnum[0].x*cnum[1].x);}
A.0 B.1 C.3 D.6
11.有以下说明语句:
struct ex{int x;float y;char z;};examplel;
则下面的叙述中不正确的是( )
A.struct是结构体类型的关键字
B.examplel是结构体类型名
C.x.y.z都是结构体成员名
D.struct cx是结构体类型
12.以下对结构体类型变量的定义中,不正确的是( )
A.typedef struct aa
{int n;float m;}AA;
B.#define AA struct aa
AA{int n;float m;}stu1;
C.struct
{int n;float m;}aa;struct aa stu;
D.struct
{int n;float m;}stu1;
13.当定义一个结构体变量时系统分配给它的内存是( )
A.各成员所需内存量的总和 B.成员中占内存量最大者所需的容量
C.结构中第一个成员所需的内存量 D.结构中最后一个成员所需的内量
14.C语言结构体变量在程序运行期间( )
A.所有成员一直驻留内存 B.只有一个成员一直驻留内存
C.没有成员驻留内存 D.部分成员驻留内存
15.若程序中有下面说明和定义:
struct abc{
int a;
char b;
}struct abc s1,s2;
则会发生的情况是( )
A.编译出错 B.能顺利编译、连接
C.能顺利编译、连接,但不能执行 D.能顺利通过编译,但出现连接错误
二、判断题(本题共5小题,每题4分,共20分)
16. ( )函数的返回值类型不能使结构体类型,只能是简单类型。
17. ( )函数可以返回指向结构体变量的指针。
18. ( )通过结构体变量的指针可以访问结构体变量的成员。
19.( )结构体的数目固定,类型相同或不同的若干有序变量的集合。
20. ( )结构体类型本身不占内存空间,结构体变量占用内存空间。
三、案例分析题(本题共2小题,共20分)
21.计算组合数,组合数公式如下:
=
要求编写一个函数fun求n!,在主函数中输入两个整数,调用函数fun计算它们的组合数并输出。
22.编写一个函数,将两个两位数的正整数A和B合并形成一个整数C。合并的方式是:将A数的十位数和个位数依次放在C数的个位数和十位数上,B数的十位数和个位数依次放在C数的百位数和千位数上。例如:当A=16,B=35时,C=5361。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
《编程语言基础——C语言》高等教育出版社(第五版)
第七章 结构体和共用体 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共15小题,每题4分,共60分)
1.设有以下说明语句:
struct ex;
{int x;
float y;
char z;
}example;
则下面的叙述中不正确的是( )
A.struct式结构体类型的关键字 B.example是结构体类型名
C.x,y,z都是结构体成员名 D.struct ex是结构体类型名
答案:B
2.设有以下说明语句:
typedef struct data
{int n;
char ch[8];
}PER;
则下面的叙述中正确的是( )
A.struct data是结构体变量名
B.PER是结构体类型名
C.typedef struct是结构体类型
D.sruct是结构体类型名
答案:B
3.若有如下定义
struct data
{int i;
char ch;
double f;}b;
则结构体变量b占用内存的字节数是( )
A.13 B.3 C.8 D.11
答案:D
4.设有如下定义:
struct sk;
{int a;
float b;
}data,*p;
若有p=&data,则对data中的成员a的正确引用是( )
A.(*p).data.a B.(*p).a
C.p->data.a D.p.data.a
答案:B
5.下对结构体变量stu1中成员age的非法引用的是( )
struct student
{int age;
int num;
}stu1,*p=&stu1;
A.stu1.age B.student.age
C.p->age D.(*p).age
答案:B
6.有以下说明和语句
struct worker
{int no;
char *name;
}work,*p=&work;则以下引用方式不正确的是( )
A.work.no B.(*p).no
C.p->no D.work->no
答案:D
7.若有以下结构体和变量定义,则以下引用方式不正确的是( )
struct worker
{int sno;
char *name;
}work,*p=&work;
A.work.sno B.(*p).name
C.p->sno D.work->sno
答案:D
8.已知有如下定义:
struct a
{char x;
double y;
}data,*t;,若有t=&data,则对data中的成员的正确引用是( )
A.(*t).data.x B.(*t).x
C.t->data.x D.t.data.x
答案:B
9.下列程序的输出结果是( )
#include<stdio.h>
struct abc
{int a,b,c;};
main(){
struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].a+s[1].b;
printf("%d
",t);}
A.5 B.6 C.7 D.8
答案:B
10.下列程序的输出结果是( )
#include<stdio.h>
main(){
struct cmplx
{int x;
int y;
}cnum[2]={1,3,2,7};
printf("%d
",cnum[0].y/cnum[0].x*cnum[1].x);}
A.0 B.1 C.3 D.6
答案:D
11.有以下说明语句:
struct ex{int x;float y;char z;};examplel;
则下面的叙述中不正确的是( )
A.struct是结构体类型的关键字
B.examplel是结构体类型名
C.x.y.z都是结构体成员名
D.struct cx是结构体类型
答案:B
12.以下对结构体类型变量的定义中,不正确的是( )
A.typedef struct aa
{int n;float m;}AA;
B.#define AA struct aa
AA{int n;float m;}stu1;
C.struct
{int n;float m;}aa;struct aa stu;
D.struct
{int n;float m;}stu1;
答案:C
13.当定义一个结构体变量时系统分配给它的内存是( )
A.各成员所需内存量的总和 B.成员中占内存量最大者所需的容量
C.结构中第一个成员所需的内存量 D.结构中最后一个成员所需的内量
答案:A
14.C语言结构体变量在程序运行期间( )
A.所有成员一直驻留内存 B.只有一个成员一直驻留内存
C.没有成员驻留内存 D.部分成员驻留内存
答案:A
15.若程序中有下面说明和定义:
struct abc{
int a;
char b;
}struct abc s1,s2;
则会发生的情况是( )
A.编译出错 B.能顺利编译、连接
C.能顺利编译、连接,但不能执行 D.能顺利通过编译,但出现连接错误
答案:A
二、判断题(本题共5小题,每题4分,共20分)
16. ( )函数的返回值类型不能使结构体类型,只能是简单类型。
答案:X
17. ( )函数可以返回指向结构体变量的指针。
答案:√
18. ( )通过结构体变量的指针可以访问结构体变量的成员。
答案:√
19.( )结构体的数目固定,类型相同或不同的若干有序变量的集合。
答案: √
20. ( )结构体类型本身不占内存空间,结构体变量占用内存空间。
答案:√
三、案例分析题(本题共2小题,共20分)
21.计算组合数,组合数公式如下:
=
要求编写一个函数fun求n!,在主函数中输入两个整数,调用函数fun计算它们的组合数并输出。
【参考程序】#include <stdio.h>
float fun(int n) {
int i;
float y = 1;
for (i = 2; i <= n; i++)
y *= i;
return y;
}
main() {
int m, n, t;
float y;
scanf("%d%d", &m, &n);
if (m < n) {
t = m;
m = n;
n = t;
}
y = fun(m) / fun(n) / fun(m - n);
printf("c(m,n)=%.0f
", y);
}
22.编写一个函数,将两个两位数的正整数A和B合并形成一个整数C。合并的方式是:将A数的十位数和个位数依次放在C数的个位数和十位数上,B数的十位数和个位数依次放在C数的百位数和千位数上。例如:当A=16,B=35时,C=5361。
【参考程序】#include <stdio.h>
int fun(int x, int y) {
int m, n; //m是a的十位,n是a的个位
int p, q; //p是b的十位,q是b的个位
int c;
m = x / 10;
n = x % 10;
p = y / 10;
q = y % 10;
c = m + n * 10 + p * 100 + q * 1000;
return c;
}
main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", fun(a, b));
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$