C语言考卷(含答案)3 下载本文

内容发布更新时间 : 2025/1/7 7:42:21星期一 下面是文章的全部内容请认真阅读。

… …__…__…__…__…__…__… __…_ __… 心…中…学 教… _…_ __…__线__… __…_ __… __…__…_ 学号……__…__…__…__…__封__…__… __…号 班… … … __…__…_ __…__…__…__…__…__…_称…名密业… 专… _… ___… __… ___…__… __…__…__…_名…姓…………电子科技大学网络教育考卷(A卷)

(20 年至20 学年度第 学期)

考试时间 年 月 日(120分钟) 课程 C语言 教师签名_____

大题号 一 二 三 四 五 六 七 八 九 十 合 计 得 分 一、单项选择题(每题2分,共30分)

1.请问:下面这个程序段的输出是什么?( ) int a=7,b=8,c=9;

if(a

A . a=7 b=8 c=7 B. a=7 b=9 c=7

C. a=8 b=9 c=7 D. a=8 b=9 c=8

2.C语言对嵌套 if 语句的规定是:else总是与( )配对。 A.其之前最近的 if B.第一个 if

C.缩进位置相同的 if D. 其之前最近且不带 else 的 if 3.有以下程序段:

int k=0;

while(k=1) k++;

while循环执行的次数是( )。

A.无限次 B.有语法错,不能执行 C. 一次也不执行 D.执行1次 4.若有语句:

tatic char x[]=\

static char y[] = {'1','2','3','4','5'}; 则下面那一个是正确的描述。( ) A.x数组和y数组的长度相同。 B.x数组长度大于y数组长度。 C.x数组长度小于y数组长度。 D.x数组等价于y数组。

5.若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是( )。 A.该数组共有20个元素 B.a[0][6]是该数组的一个元素

C.a[0][0]是该数组的一个元素 D.a[5][6]是该数组的一个元素 6.对局部变量不正确描述( )

A.在不同块内可以使用相同的变量名而不会混淆。 B.局部变量在任何一个函数内有效。 C.局部变量的初值每调用一次赋一次 D.用auto说明的变量为局部变量。

7.凡是函数中未指定存储类别的局部变量,隐含的存储类别为( )。

A.auto

B. register

C. static

D. extern

8.在说明语句:int *f( );中,标识符f代表的是( )

A.一个返回值为指针型的函数名

B. 一个用于指向整型数据的指针变量

C.一个用于指向函数的指针变量

D.一个用于指向一维数组的行指针 9.typedef( )

A. 可以定义各种类型名和变量名。 B. 可以创造新的数据类型。

C. 和#define作用相同。

D. 只是对已存在的类型增加一个类型名,不能创造新类型。

10.若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是( )。A.fp=fopen(\C.fp=fopen(\ 11.移位运算符”<<”的含义( )

A. 从一个变量移动到另一个变量

B. 移位运算符”<<”可以适合任意类型的数据

C. 按二进位移位运算,限定为整型数据和字符型数据 D. 按二进位移位运算,限定为整型数据

12.如果int a=0x3; int b=0x2; 执行运算: a<<=b; 则x的结果是( )

A. 0 B. 1 C. 11 D.48

13.设:int g = 2 ; 下列表达式的值,哪一个等于 1? ( ) A. ~g&g B. g>g C. g^=g D. ~g&1 14.正确描述文件包含预处理的含义( )

A.目标文件 B.执行文件

C.C源文件 D.一条包含命令可以包含多个文件 15.对宏定义的不正确描述( ) A.宏定义是用宏名代替一个字符串。

B.#define 的作用范围,是整个源文件有效。

C.宏名可以在其它宏定义中引用,可以层层替换。

D.用双引号扩起来的字符串,即使与宏名相同,也不进行置换。

二、判断题(每小题1分,共11分) 1.( )若以”a+”方式打开文件时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操

作。 2.( )函数rewind的作用是使位置指针指向文件的末尾。

3.( )用typedef只是将已存在的类型用一个新的标识符来代表 4.( )C语言联合类型变量在程序运行期间只有一个成员驻留在内存中。

5.( )说明一个结构体变量时,系统分配给它的内存是各成员所需内存量的总和。 6.( )语句int(* ptr)( );的含义是指向函数的指针,该函数返回一个int型数据。 7.( )C语言允许main函数带形参,形参名只能是argc和argv。

1

8.( )预处理指令只能位于C源程序文件的首部。

9.( )在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需

要使用的存储类别是extern

10.( )若用数组名作为函数调用的实参,则传递给形参的是数组的首地址。 11.( )函数的定义不可以嵌套,但函数的调用可以嵌套。 三、分析程序给出运行结果(每题5分,共25分)

1.以下程序的运行结果是:

#include \#include \struct data

{ int x,y; }; void main()

{ struct data * p;p=(struct data *)malloc(sizeof(struct data));

(*p).x=3;(*p).y=4;

printf(\free(p); }

2.分析下面程序的运行结果。 #include main()

{ int a=0x9567; printf(“a=%x\\n”,a); printf(“%x\\n”, (a >> 12) & ~ ( ~ 0 << 12)); return 0; }

3.分析下面程序的运行结果。

#include ( B ) #define SQR(y) y*y main() {

int a,b=4; a=SQR(b+1);

printf(\}

4.给出下面程序的运行结果。 main()

{ unsigned a=0361,x,y; int n=5; x = a<<(16-n); printf(“x = %o\\n”,x);

y = a>>n;

printf(“y1 = %o\\n”,y); y|=x;

printf(“y2 = %o\\n”,y); }

5.给出下面程序的运行结果。 main()

{ struct example { struct { int x; int y; }in; int a; int b; }e;

e.a=1; e.b=2;

e.in.x=e.a*e.b; e.in.y=e.a+e.b;

printf(“%d,%d”,e.in.x,e.in.y); }

四、完善程序填空题(每题7分,共14分)

1.将一个数组中的值按逆序重新存放,

#include void main()

{ int i,j,m,n=0,temp; int x[20];

printf(\输入需排序的个数%d\\n\ scanf(\ for(i=0;i

{ j = ; temp = x[i]; x[i] = x[j]; x[j] = temp; } }

2.将原文件file1.c的内容读出并显示, 同时将其内容写入file2.c文件中。#include main()

{ FILE *fp1,*fp2;

fp1=fopen(\

2

fp2=fopen(\

while(!feof(fp1)) putchar(getc(fp1)); rewind( ); while(!feof(fp1)) putc( ); fclose(fp1);fclose(fp2); }

五、编程题 (每题10分,共20分)

1.请编制程序实现:输出1900~2000年中是闰年的年份。要求:符合下面2个条件之一的年份是闰年。闰年的第一条件是:能被4整除、但不能被100整除。第二条件是:能被100整除也能被400整除。

2.输出所有的“水仙花数”。所谓”水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,

153是一水仙花数,因为153=13+53+33

3