C语言期末复习试题及答案 联系客服

发布时间 : 星期日 文章C语言期末复习试题及答案更新完毕开始阅读ac7771012e3f5727a5e9628b

C: 结构体型可以派生 D: 定义多个结构体型

6_3、有如下定义:struct student{char name[20];int age;}wang,*p;p=&wang;,以下不合法的引用为()。

A: p.age B: wang.age C: p->age D: (*p).age 6_4、在定义构造数据类型时,不能()。

A:说明变量 B:说明存储类型 C:初始化 D:末尾不写分号 6_5、当定义一个结构体变量时,系统分配给它的内存是()。

A:各成员所需内存量的总和 B:结构中第一个成员所需内存量 C:结构中最后一个成员所需内存量 D:成员中占内存量最大者所需的容量 6_6、enum a {sum=9,mon=-1,tue};定义了()。

A:枚举变量 B:3个标识符 C:枚举数据类型 D:整数9和-1 6_7、设有:enum team{my,you=4,his,her=his+5}; 则 Printf(“%d,%d,%d,%d\\n”,my,your,his,her);的输出是()。

A: 0,1,2,3 B: 0,4,0,10 C: 0,4,5,10 D: 1,4,5,10 6_8、以下各选项企图说明一种新的类型名,其中正确的是()。

A:typedef v1 int; B:typedef v2=int; C:typedef int V3; D:typedef v4: int; 6_8、下列程序中错误的语句是: #include main() {

①enum aa{red,blue}bb; ②bb=red; ③bb=0; ④bb=black; ⑤bb=2;

⑥bb=enum cc{white,black}dd; }

答案:B;A;A;D;A;C;C;C;④⑤⑥

7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().

A: 14 B:16 C: 18 D: 20

7-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值为().

A: 11 B:13 C: 15 D: 17

7_3、有宏定义为: #define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().

A: 11 B: 13 C: 15 D: 17

7_4、对于#define S(r) 2*r*r和 #define S(r) 2*(r)*(r), s(3+4)的结果是().

A: 98和22 B: 13和4 C: 22和98 D: 98和98

答案:A;B;B;C;

8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。

A: p=&b;scanf(“%d’,&p); B: p=&b; scanf(“%d’,*p); C: scanf(“%d’,&b); p=b; D: p=&b; p=&a;

8-2、若有语句:int a[3][4],*p[3]={a[0],a[1],a[2]}; 不能表示a[2][3]的元素的是()。

A: *(*(a+2)+3) B: *(*(p+2)+3) C:*(p[2]+3) D: (*(p+2)) 8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。

5

A: *p1-*p2 B: p1++ C: *p1%*p2 D: p1-p2 8_4、有以下定义:int a[2][3];,则对数组元素的正确引用()是。

A: *(*(a+i)+j) B: (a+i)[j] C: *(a+i+j) D: a[i]+j 8_5、若有定义:int (*p)();,则该指针为()。

A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针 8_6、下列正确的定义是()。

① int i,*p=&i; ②int *p=&i,i; ③int *p,i;p=&i;④int *p,i;p=i;⑤int *p,i,p=&i; A: ①③ B: ②④ C:②⑤ D:④①

答案:D;D;C;A;C;A;

四、多项选择题

1_1、下列选项中合法的标识符有()。

A: good_morning B:main C: stdio.h D: 8abc 答案:AB;

1_2、下列选项中合法的用户标识符有()。

A: page B:short C: _3com D: int 答案:AC;

1_3、下列选项中合法的用户标识符有()。

A: return B:f2_G3 C: a3-3 D: abc 答案: BD;

1_4、以下叙述正确的是()。

A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。 C:C程序书写格式自由:一行内可以写几个语句,一个语句也可以写在几行。 D:可以使用/*?*/对C程序中的任何部分作注释。 答案:ABCD;

1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。

A: 只能是0或1; B:只能是0或非0正数; C: 可以是整型(正或负)或字符型数据; D:可以是任何类型的数据; 答案:AB;

1_6、以下对switch语句和break语句中描述错误的有()。

A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句;

C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分; 答案:ABD;

2_1、已定义c为字符型变量,则下列语句中错误的是()。

A: c=’97’; B:c=”97” ; C: c=97; D: c=”a”; 答案:ABD;

3_1、以下正确的是()。

A:预处理命令行必须以‘#’开始。 B:以‘#’开始的都是预处理命令行。 C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。 答案:ABD;

4_1、在定义int a[2][3]之后,对a[i][j]的正确的引用有()。

A: a[0][2] B: a[1,3] C: a[1>2][!1] D: a[2][0] 答案:AC;

6

4_2、以下对二维数组a正确初始化的是()。

A:static char word[]=?Turbo\\0?; B:static char word[]={?T?,?u?,?r?,?b?,?o?,?\\0?}; C:static char word[]={“Turbo\\0”}; D:static char word[]=”Turbo\\0”; 答案:BCD;

5_1、以下4个选项中可以看作是一条语句的有()。

A: {;} B: a=0,b=0,c=0 ; C: if(a>0); D: if(b==0) m=1;n=2; 答案:ABC;

5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。

A: a=b=c=d=100 ; B: d++; C: c+b; D: d=(c=22)-(b++); 答案:ABD;

5_3、设有以下定义:int a=0;double b=1.25;char c=’A’;

#difine d 2 ,则正确的语句是()。

A: a++; B: b++; C: c++; D: d++;(自运算不可是常量或表达式) 答案:ABC;

6_1、以下述说中正确的是()。

A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。 C:c源程序的基本组成单位是函数。

D:在c源程序中,注释说明只能位于一条语句的最后。 答案:ABC;

6_2、以下对C语言中的函数描述不正确的是()。

A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用和递归调用。 C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。 答案:ACD;

6_3、A:形式参数、内部动态变量和寄存器变量的生存期是所在函数执行完,它们非编译时分配内存.

B:内部和外部变量同名,内部变量优先.

C:extern一般用于声明(说明)外部变量,并且由声明可改变其作用范围. D:外部变量与静态变量一样,未赋值时其值为0,且是编译时分配静态内存。

答案:ABCD;

五、程序填空

1、功能:计算平均成绩并统计90分以上人数。成绩数据以一负数作为结束标志。

#include void main(void) {

int n,m;float grade,average; /***********SPACE***********/ average=n=m=【?】; while(1) {

/***********SPACE***********/ 【?】(\ if(grade<0) break; n++;

average+=grade;

/***********SPACE***********/ if(grade<90)【?】; m++; }

7

if(n) printf(\}

答案: 1). 0 或 0.0 2). scanf 3). Continue

2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。

#include \void main() {

int a[10],*p,*s,i; for(i=0;i<10;i++)

/***********SPACE***********/ scanf(\【?】);

/***********SPACE***********/ for(p=a,s=a;【?】<10;p++) if(*p>*s) s=p;

/***********SPACE***********/

printf(\【?】,s-a); }

答案:1). a + i 或 &a[i] 2). p-a 或 -a+p

3、功能:输入学生成绩并显示。

# include struct student {

char number[6]; char name[6]; int score[3]; } stu[2];

void output(struct student stu[2]); void main(void) {

int i, j;

/***********SPACE***********/ for(i=0; i<2; 【?】) {

printf(\请输入学生%d的成绩:\\n\ printf(\学号:\

/***********SPACE***********/ scanf(\【?】.number); printf(\姓名:\

scanf(\ for(j=0; j<3; j++) {

printf(\成绩 %d. \ /***********SPACE***********/ scanf(\【?】.score[j]); }

printf(\ }

output(stu); }

void output(struct student stu[2]) {

int i, j;

printf(\学号 姓名 成绩1 成绩2 成绩3\\n\ for(i=0; i<2; i++) {

8

3). *s