C语言期末试卷A

C语言期末试卷A
C语言期末试卷A

1

C 语言 期末试卷(A 卷)

一、单选(20%,每题1分)

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

A 、一个C 源程序可由一个或多个函数组成。

B 、一个

C 源程序必须包含一个main( )函数。 C 、C 程序的基本组成单位是函数。

D 、在C 程序中,注释说明只能位于一条语句的后面。 2、以下选项中,能用作用户标识符的是( )。 A 、void B 、8_8 C 、_0_ D 、unsigned

3、若有定义:int x=3,y=4;则表达式!x||y 的值为( )。 A 、1 B 、0 C 、3 D 、4

4、对于类型相同的指针变量,不能进行的运算是( )。 A 、+ B 、 - C 、= D 、==

5、以下程序段的运行结果是( )。 enum weekday{aa,bb=2,cc,dd,ee}week=ee; printf(“%d ”,week);

A 、ee

B 、5

C 、 2

D 、4

6、下面程序中,结构体变量a 所占的内存字节数是( ) union U

{char st[4]; int i; long l;}; struct A

{int c; union U u;}a;

A 、4

B 、5

C 、 6

D 、8 7、以下程序的输出结果是( )。 main( )

{int a[]={1,2,3,4,5,6},*p; p=a;

*(p+3)+=2;

printf(“%d,%d\n ”,*p,*(p+3));}

A 、2,4

B 、 2,6

C 、1,4

D 、1,6 8、下面说法不成立的是( )。

A 、结构体可以嵌套定义

B 、共用体可以嵌套定义

C 、结构体的成员不可以是共用体

D 、结构体的成员可以是共用体、结构体和基本数据类型

9、以下程序的输出结果是( )。 void main( )

{char a=3,b=6; char c=a^b<<2; printf(“%d ”,c);} A 、10 B 、20 C 、27 D 、28

10、以下对结构体变量stu1 中成员age 的非法引用是( )。 struct student{int age;int num;}stu1,*p; p=&stu1;

A 、stu1.age

B 、student.age

C 、p->age

D 、(*p).age

11、当调用函数时,实参是一个数组名,则向函数传递的是( )。 A 、数组的首地址 B 、数组的长度

C 、数组每一个元素的地址

D 、数组每个元素中的值 12、以下程序的输出结果是( )。 #define SUM(y) 1+y main( ) {int x=2;

printf(“%d ”,SUM(5)*x);}

A 、 10

B 、 11

C 、12

D 、15 13、以下运算符中优先级最高的是( )。 A 、& B 、 << C 、 | D 、~

14、在C 语言中,用“W ”方式打开一个已含有10个字符的文本文件,并写入了5个新字符,则该文件中存放的字符是( )。 A、新写入的5个字符

B 、新写入的5个字符覆盖原有字符中的前5个字符,保留原有的后5个字符

C 、原有的10个字符在前,新写入的5个字符在后

D 、新写入的5个字符在前,原有的10个字符在后

15、若有定义:int *p,a=4; p=&a;则以下均代表地址的是( )。 A 、a,p B 、&a,p C 、&a,*p D 、a,*p 16、下面函数调用正确的是( )。

A 、fopen(…file.dat ?,?r ?);

B 、fprintf(“%ld ”,data,fp) ;

C 、fclose(“file.dat ”);

D 、fread(&i,sizeof(int),1,fp); 17、函数调用语句fseek(fp,-10L,2);的含义是( )。 A 、将文件位置指针移动到距离文件头10个字节处。

B 、将文件位置指针从当前位置向文件尾方向移动10个字节。

C 、将文件位置指针从当前位置向文件头方向移动10个字节。

D 、将文件位置指针从文件末尾处向文件头方向移动10个字节。

18、以下程序运行后,屏幕显示File open error!,则可能的原因是( )。 main()

{ FILE *fp;char str[256]; fp = fopen("test.txt", "rt"); if(fp==NULL)

{ printf("File open error!");return;} fscanf(fp,"%s",str);

班级: 姓名: 学号

○ ○ 密 ○ 封 ○ 装 ○ 订 ○ 线 ○ ○

密 封 线 内 不 要 答 题

fclose(fp);}

A、当前工作目录下有test.txt文件,但test.txt文件太小

B、test.txt文件不能关闭

C、当前工作目录下没有test.txt文件

D、当前工作目录下有test.txt文件,但test.txt文件太大

19、下面程序的输出结果是( ) 。

main( )

{union u{char *name;int age;int income;}s;

https://www.360docs.net/doc/287025070.html,=”Wangling”;s.age=28;s.income=1000;

printf(“%d”,s.age);}

A、28

B、1000

C、0

D、不确定

20、.以下程序段运行后x的值为()。

int a[9]={1,2,3,4,5,6,3,8,9};

int *p,*q;

int i,x;

p=&a[0]; q=&a[8];

for(i=0;i<3;i++)

if(*(p+i)==*(q-i))

x=*(p+i)*2;

A、2

B、4

C、6

D、8

二、填空(10%,每个空格1分)

1、对于整型变量x和y,语句for(x=0,y=0;(y!=20)&&(x<4);x++) y++;

中的“y++;”被执行次数为_________________。

2、在C语言中,表示逻辑“真”值用_________表示。

3、若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是_________。

4、若fp已正确定义并指向某个文件,当末遇到该文件结束标志时,函数feof(fp)的返回值是__________。

5、设int a[5]={10,20,30,40,50},*p;p=a;则语句*++p的值为______________。

6、C语言可以处理的文件类型是二进制文件和_________________。

7、C语言函数返回类型的默认定义类型是。

8、设x=2,y=3,则表达式x<

9、程序段char a[]="abc\0mis";printf("%d",strlen(a)); 运行后屏幕输出为_______。

10、用来定义符号常量的预处理指令是______________。

三、程序分析题(24%,每题6分)

1、#include

void test(int *x,int *y)

{int t;

t=*x,*x=*y;*y=t;}

void main( )

{int a=10,b=20;

test(&a,&b);

printf(“a=%d,b=%d\n”,a,b);}

运行结果:

2、#include

main( )

{struct test{int a;int b;char ch;}x;

x.a=4;

x.b=5;

x.ch=?A?;

printf(“%d,%c”,x.a+x.b,x.a+x.ch);}

运行结果:

3、#include

main( )

{FILE *fp;int i=1,j=2,k,n;

fp=fopen(“d1.dat”,”w”);

fprintf(fp,”%d\n”,i);

fprintf(fp,”%d\n”,j);

fclose(fp);

fp=fopen(“d1.dat”,”r”);

fscanf(fp,”%d%d”,&k,&n);

printf(“%d,%d\n”,k,n);

fclose(fp);

运行结果:

4、void fun(char s1[])

{int i,j;

for(i=j=0;*(s1+i)!=?\0?;i++)

if(*(s1+i)

{*(s1+j)=*(s1+i);

j++;}

*(s1+j)=?\0?;}

main( )

{char str[]=”morning”,*p;

p=str;

fun(p);

puts(p);}

运行结果:

四、程序填空题(16%,每个空格2分)

1、下列程序输出数组中的最大值及最小值。请填空。

#include

main( )

{int a[10]={6,7,3,9,1,10,8,4,2,5};

int *p,max,min;

2

________________

for(p=a;p

{if(*p>max)_______________

if(*p

printf(“max=%d,min=%d”,max,min); }

2、有3个学生的成绩需要保存在score.dat文件中。保存格式如下:

学生姓名,年龄,成绩,

学生姓名,年龄,成绩,

学生姓名,年龄,成绩,

请完成下面这段源程序。

#include

void main( )

{FILE *fp; int i; char name[30]; int age; float score;

fp=fopen(“______________”,”w”);

for(i=0;i<3;i++)

{printf(“请输入第%d个学生的信息\n”,_____________);

printf(“姓名:”);

scanf(“%s”,name);

printf(“年龄:”);

scanf(“”%d”,&age);

printf(“成绩:”);

_______________

fprintf(fp,_______________,name,age,score); }

_________________ }

五、编程题(30%,每题10分)

1、有一个职工employ,内含姓名、工资和年龄。要求从键盘输入该职工的信息,并增加工资30%,年龄增加1岁,并输出修改后的结果。

2、从d:\file1.txt的文本文件中读取前5个字符,依次显示在屏幕上。

3、将a数组中的字符串复制到b数组。(用指针)

3

相关主题
相关文档
最新文档