printf(“%s”,c); A.ab B.abc
5、有下面的程序段:
char a[3],b[]=“China”; a=b;
printf(“%s”,a);
A.运行后将输出China C.运行后将输出Chi
C.ab\\0 D.ab\\0c\\0
B.运行后将输出Ch D.编译出错
六、结构体
1、定义一个结构体变量后,该变量所占内存大小是()
A.结构体中第一个成员所需内存容量 B.结构体中最后一个成员所需内存容量
C.结构体中各成员所需内存容量总和 D.结构体成员中占内存容量最大者所需的容量 2、程序中有下面的说明和定义 struct abc { int x;char y;} struct abc s1,s2; 则会发生的情况是 。 A. 编译出错 B. 程序将顺利编译、连接、执行 C. 能顺利通过编译、连接、但不能执行 D. 能顺利通过编译、但连接出错 3、 若有程序片段
struct LIST {
int num;
struct NODE *next; } L1;
下列叙述正确的是(C)。
A 以上的说明形式非法 B LIST是一个结构体变量 C L1是一个结构体类型 D L1是一个结构体变量 4、当定义一个结构体变量时,系统分配给它的内存是( A )。
A. 各成员所需内存量的总和 B. 结构中第一个成员所需内存量 C. 结构中最后一个成员所需内存量 D. 成员中占内存量最大者所需的容量 5、 有如下定义 struct person
{ char name[9]; int age; };
struct person class[10]=
{“Tom”,17,“John”,19,“Susan”,18,“Adam” ,16};
根据上述定义,能输出字母A的语句是( B ) A. printf(“%c\\n”,class[3].name); B. printf(“%c\\n”,class[3].name[0]); C. printf(“%c\\n”,class[3].name[1]); D. printf(“%c\\n”,class[2].name[3]);
6
6、 已知: struct sk { int a;
float b;
}data, *p;
若有p=&data,则对data中的成员a的正确引用是( C )。 A.(*p).data.a B.p->data.a C.(*p).a D.p.data.a 7、 以下说法中正确的是:( C )
A.一个结构只能包含一种数据类型
B.不同结构中的成员不能有相同的成员名 C.两个结构变量不可以进行比较
D.关键字typedef用于定义新的数据类型
8 、存放100个学生的数据、包括学号、姓名、成绩。在如下的定义中,不正确的是( A.struct student { int sno;
char name[20];
float score;} stu[100]; B. struct student stu[100] { int sno;
char name[20]; float score}; C. struct { int sno;
char name[20];
float score;} stu[100]; D. struct student
{int sno;
char name[20]; float score;}; struct student stu[100];
*********************************
9、关于结构体说法不正确的是 C 。 A)可以把不同类型的数据组合成一个整体,生成新的数据类型; B)结构体的成员可以是基本类型,也可以是结构体类型; C)不能将结构体变量赋值给同类型的其他变量; D)结构体嵌套时,应该逐级引用到最内层成员; 10、关于typedef的叙述中不正确的是___B___。
A)用typedef可以定义各种类型名,但不能用来定义变量; B)用typedef可以增加新的数据类型;
C)用typedef只是将已存在的类型用一个新的标识符来代表; D)使用typedef有利于程序的通用和移植;
11、以下对结构体变量stu1中成员age的非法引用是___B_____。 struct student {int age; int num; }stu1,*p; p=&stu1;
A) stu1.age B) student.age C) p->age D)(*p).age
7
B )。
七、文件操作
1、以下叙述中错误的是( )。
A. C语言源程序经编译后生成后缀为.obj的目标程序
B. C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ********************************* 2、在C语言中,缓冲文件系统是指:( B )
A.缓冲区是由用户自己申请的 B.缓冲区是由系统自动建立的 C.缓冲区是根据文件的大小决定的 D.缓冲区是根据内存的大小决定的
3、若fp是指向某文件的指针,且已读到该文件的末尾,则函数feof(fp)的返回值是( A. EOF B. -1 C. 非零值 D. NULL *********************************
4、若执行fopen函数时发生错误,则函数的返回值是___B____。 A) 地址值 B) 0 C) 1 D) EOF
5、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则 打开方式字符串应是___A___。 A) \ B)\ C)\ D)\6、fscanf函数的正确调用形式是____D_____。 A) fscanf(文件指针,格式字符串,输出表列); B) fscanf(格式字符串,输出表列,文件指针); C) fscanf(格式字符串,文件指针,输出表列); D) fscanf(文件指针,格式字符串,输入表列); 7、关于函数fclose的叙述错误的是 D 。
A) 关闭一个打开的文件;
B) 需要向该函数传递一个文件指针作实参 ; C) 既可以关闭二进制文件也可以关闭文本文件; D) 通过该函数关闭文件后还能继续读写数据;
八、C++部分
1、下列关于类的继承描述中,( )是错误的
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数 B.派生类也是基类,但基类不一定具有派生类的全部属性和方法 C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法 D.一个基类可以有多个派生类,一个派生类可以有多个基类. 2、编写C++程序一般需经过的几个步骤依次是()
A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行
*********************************
3、 下面关于对象概念的描述中,错误的是( A )。 A. 对象就是C语言中的结构变量
B. 对象代表着正在创建的系统中的一个实体
8
) C. 对象是一个属性和操作(或方法)的封装体 D. 对象之间的信息传递是通过消息进行的 4、下列描述中错误的是( C )。
A. 对象与对象之间可以通过消息进行通信和联络 B. 类用于描述事物的属性和对事物的操作
C. 类与类之间必须是平等的关系,而不能组成层次关系 D. 类与类之间可以通过封装而具有明确的独立性
5、面向对象程序设计思想的主要特征中不包括( D )。 A. 封装性 B. 多态性 C. 继承性
D. 功能分解,逐步求精
6、 采用重载函数的目的是( D )。
A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 7、在面向对象方法中,“封装”的含义,不包括 D 。
A) 通过对象把属性和操作包装起来; B) 通过对象隐藏其内部细节; C) 各对象相互独立,互不干扰; D) 复制其他类的所有内容;
8、向系统动态申请内存的函数不包括 D 。 A) mallloc B) realloc C) new D) delete
9、在声明类时,下面说法正确的是 C 。
A) 可以在类的声明中给数据成员赋值; B) 数据成员的存储类型可以是任意类型; C) private,public,protected可以任意顺序出现;
D) 没有用private,public,protected定义的数据成员是公有成员;
Ⅱ填空题: 一、基础部分
1. 在循环语句的循环体中, break语句的作用是(退出其所在循环)
2. 程序段int i=0,x=15; for(; i 5. C语言中的标识符只能由3种字符组成,它们是__数字___、___字母__、_下划线___ 6. 在C语言中,&作为单目运算符时表示的是___取地址运算_______ **************************************************** 7. 一个C程序由若干个函数组成,但其中必须有一个__main()_函数。 8. 数组在内存中占连续一片的存储区, 数组名 代表其首地址。 9. c语言表达式5>2>7>8的值是 0 。 10. 函数的定义不可以嵌套,但函数的 调用 可以嵌套。 11. 已知 i=5.6;写出语句 a=(int)i; 执行后变量 i 的值是 5.6 。 12. 如果函数不要求带回结果值,可用 void 来定义函数返回值为空。 13、一个C语言程序是由若干个 (1) 组成。 函数 二、数组 9 1.有数组定义:int a[5] = {12,3,99,7,53};则值最小的数组元素的下标值是: 1 。 **************************************************** 2.对于一维数组的定义\类型说明符 数组名[常量表达式]\其中常量表达式可以包括_____整形常量_____和___符号常量_______,不能包含____变量______。 3. 若有定义:double x[3][5];则x数组中行下标的下限为____0_____,列下标的上限为_____4____。 **************************************************** 4、若二维数组a有m列,则在a[i][j]前的元素个数为__i*m+j______。 5. 若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]。 三、指针 1.变量i的值为3,i的地址为1000,若欲使p为指向i的指针变量,使用的语句是 int * p = &i; 。 2.设p1,p2为同类型的指针变量,若有p1==p2,则说明p1与p2指向_同一个变量或数组元素_____。 3.当函数中使用指针变量作为形参时,它和实参 共享 内存地址空间。 **************************************************** 4. 设有如下定义:int (*ptr)( );ptr 是指向 函数 的指针 ;该函数返回一个 int 型数据 5. 有以下程序 #include { char *p=\ printf(\ } 程序运行后的输出结果是 5 。 6、已定义以下函数 fun(char *p2, char *p1) { while((*p2=*p1)!='\\0'){ p1++;p2++; } } 函数的功能是:将 p1 所指字符串复制到 p2 所指内存空间 ************************************************************* 7. 设有如下定义:int (*ptr)( );ptr 是指向 函数 的指针 ;该函数返回一个 int 型数据 8、 有如下程序段 int *p ,a=10 ,b=1 ; p=&a ; a=*p+b ; 执行该程序段后,a 的值为 11 。 9. 有以下程序 #include { char *p=\ 10