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 ________________