HZAU-专业C++作业7-8
一、判断题
1. 结构体的定义不为它分配具体的内存空间。T (2分)
2. C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。T
3. 允许用户将不同类型的数据组合成一个有机的整体,这些数据互相联系;这种数据结构称为结构体(structure)。 (2分)T
4. struct是关键字,不能省略:“结构体名”用作结构体类型的标志,是用户定义的标识符。 (2分)T
5. 结构体变量所占的内存长度等于每个成员长度之和(字符型特殊)。T (2分)
6. 结构体中的成员(域),不可以单独使用。F (2分)
7. 结构体变量能整体进行输入输出。F (2分)
8. 如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级的到最低一级的成员。只能对最低一级的成员进行赋值、存取或运算。 T
9. 把整个结构体变量传递给函数默认情况下采取的是“值传递”方式,要求形参也必须是同类型的结构体变量。当然也可由程序员控制用指针参数或引用参数传递。 (2分)T
10. 结构体变量的各个初值用花括号{、}括起来,花括号内各个成员变量的值之间用分号分隔,其值必须与成员变量一一对应,且数据类型应与成员变量一致。sizeof结构体大小F
11. 宏替换时先求出实参表达式的值,然后带入形参运算求值。F (2分)
12. 宏替换不存在类型问题,它的参数也是无类型的。T (2分)
13. 在C++语言标准库头文件中包含了许多系统函数的原型声明,因此只要程序中使用了这些函数,则应包含这些头文件。T (2分)
14. H头文件只能由编译系统提供。 F (2分)
15. #include命令可以包含一个含有函数定义的C++语言源程序文件。 T (2分)
16. #include <…>命令中的文件名是不能包括路径的。t (2分)
17. 可以使用条件编译命令来选择某部分程序是否被编译T。 (2分)
18. 宏定义中的形参是标识符,在宏调用中的实参不可以是表达式。 F (2分)
19. 一个#include命令一次只能包含一个文件,若想包含多个文件,须用多个#include命令。 T(2分)
2、选择题
1. 以下叙述中错误的是( C )。
A. 预处理命令行都必须以#开始
B. 在程序中凡是以#开始的语句都是预处理命令行
C. C++程序在执行过程中对预处理命令行进行处理
D. 预处理命令行可以出现在C++程序中任意一行上
B. 在程序中凡是以#开始的语句都是预处理命令行
C. C++程序在执行过程中对预处理命令行进行处理
D. 预处理命令行可以出现在C++程序中任意一行上
2. 以下有关宏替换的叙述中错误的是( D )。
A.宏替换不占用运行时间 B. 宏名无类型
C. 宏替换只是字符替换 D. 宏名必须用大写字母表示
3. 设#define P(x) x/x,执行语句cout<<P(3*5);后的输出结果是( C )。
A. 1 B. 0 C. 25 D. 15
4. 若有宏定义#define MOD(x,y) x%y,下面程序段的结果是(D )。
int z,a=15;float b=100;
z=MOD(b,a);
cout << z++;
A. 11 B. 10 C. 6 D. 语法错误
5. 在任何情况下计算平方都不会引起二义性的宏定义是( D )。
A. #define POWER(x) x*x
B. #define POWER(x) (x)*(x)
C. #define POWER(x) (x*x)
D. #define POWER(x) ((x)*(x))
B. #define POWER(x) (x)*(x)
C. #define POWER(x) (x*x)
D. #define POWER(x) ((x)*(x))
6. 下面关于条件编译命令的叙述中正确的是( D )。
A. 条件编译命令只能处理1个分支
B. 条件编译命令只能处理2个分支
C. 条件编译命令只能处理3个分支
D. 条件编译命令可以处理若干个分支
B. 条件编译命令只能处理2个分支
C. 条件编译命令只能处理3个分支
D. 条件编译命令可以处理若干个分支
7. 在“文件包含”预处理命令形式中,当#include后面的文件名用“”括起来时,寻被包含文件的方式是( B)。
A. 直接按系统设定的标准方式搜索目录
B. 先在源文件所在目录中搜索,再按系统设定的标准方式搜索
B. 先在源文件所在目录中搜索,再按系统设定的标准方式搜索
C. 仅仅搜索源文件所在目录
D. 仅仅搜索当前目录
D. 仅仅搜索当前目录
8. 关于编译预处理说法错误的是(C)。
A. 预处理命令必须以#开头
B. 预处理命令必须单独占据一行
C. 预处理命令只能位于源程序中所有语句之前
D. 预处理命令不是C++语句
B. 预处理命令必须单独占据一行
C. 预处理命令只能位于源程序中所有语句之前
D. 预处理命令不是C++语句
9. 下面关于结构体概念的叙述中,正确的说法是( C )。
A. 相同类型数据的集合称为结构体
B. 不同类型数据的集合称为结构体
C. 数据的集合称为结构体
D. 整数的集合称为结构体
B. 不同类型数据的集合称为结构体
C. 数据的集合称为结构体
D. 整数的集合称为结构体
10. 设有以下说明语句:
struct abc
{
int m;
float n;
}stype;
则下面错误的叙述是( B )。
A. struct是定义结构体类型的关键字 B. stype是结构体类型名
C. m和n都是结构体成员名 D. stype是结构体变量名
11. 若有以下说明和语句:
struct worker
{ int no; char ﹡name; }work, ﹡p=&work;
则以下引用方式不正确的是( D )。
A. work.No B. (﹡p).no C. p->no D. work->no
12. 有如下定义:
struct date { int year, month, day; };
struct worklist { char name[20]; char sex;
struct date birthday; }person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( C )。
A. year=1958 B. birthday.year=1958
C. person.birthday.year=1958 D. person.year=1958
13. C++语言结构体类型变量在程序执行期间 ( A )。
A. 所有成员一直驻留在内存中 B. 只有一个成员主留在内存中
C. 部分成员驻留在内存中 D. 没有成员驻留在内存中
14. 有如下定义
struct person{char name[9]; int age;};
struct person class[10]={“Johu”, 17,
“Paul”, 19
“Mary”, 18,
“Adam 16,};
根据上述定义,能输出字母M的语句是( D )。
A. cout<<class[3].mane ;
B. cout<<class[3].name[1] ;
C. cout<<class[2].name[1] ;
D. cout<<class[2].name[0] ;
C. cout<<class[2].name[1] ;
D. cout<<class[2].name[0] ;
15. 设有如下定义
struct ss
{ char name[10];
int age;
char sex;
} std[3],* p=std;
下面各输入语句中错误的是( B )。
A. cin>>&(*p).age ;
B. cin>>&std.name ;
C. cin>>&std[0].sex ;
D. cin>>&(p->sex) ;
C. cin>>&std[0].sex ;
D. cin>>&(p->sex) ;
16. 以下结构类型可用来构造链表的是( B )。
A. struct aa{ int a;int * b;};
B. struct bb{ int a;bb * b;};
C. struct cc{ int * a;cc b;};
D. struct dd{ int * a;aa b;};
B. struct bb{ int a;bb * b;};
C. struct cc{ int * a;cc b;};
D. struct dd{ int * a;aa b;};
17. 以下程序的输出结果是( A )。
amovep(int *p, int a[3][3],int n)
{ int i, j;
for( i=0;i<n;i++)
for(j=0;j<n;j++){ *p=a[i][j];p++; }
}
void main()
{ int *p,a[3][3]={{1,3,5},{2,4,6}};
发表评论