井冈山大学2022年C语言期末复习题

本试卷为井冈山大学2022年C语言期末复习题,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言期末复习题

一、单项选择题 (共50题,每题2分,共计100分)

(  B  )
1、若有以下程序段: int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%a",a,b,c);执行后的输出结果是________。
A、3,0,-10
B、0,0,5
C、-10,3,-10
D、3,0,3
(  B  )
2、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。
A、if(x>0)y=1;
B、if(x)
else if(x>0)y=1;
else y=0; else if(x%0)y=-1;
else y=0;
C、y=-1
D、y=0;
if(x) if(x>=0)
if(x>O)y=1; if(xi>=O)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
(  D  )
3、以下c语言用户标识符中,不合法的是________。
A、_1
B、AaBc
C、a b
D、a--b
(  A  )
4、在c语言中,存储一个字符型、整型、单精度实型变量所需的空间是________。型、单精度实型变量所需的空间是________。
A、1、2、4
B、1、1、4
C、1、2、8
D、2、2、8
(  B  )
5、在c语言程序中可用做用户标识符的是________。
A、void
123
BBN
B、aa
_abc
cas
C、as+b3
-123
If
D、6f
Do
SIG
(  B  )
6、下列表达式的结果正确的是________。 int a,b,c,d; a=b=c=d=2; d=a+1==3?b=a+2:a+3; printf("%d\n",d);
A、2
B、4
C、3
D、5
(  B  )
7、不能把字符串:hello!赋给数组b的语句是________。
A、char b[10]={'H','e','l','l','o','!'};
B、char b[10]; b="Hello!";
C、char b[10]; strcpy(b,"Hello!");
D、char b[10]="Hello!";
(  C  )
8、以下for循环是________。 for(x=0,y=0;(y!=123) && (x<4);x++)
A、无限循环
B、循环次数不定
C、执行4次
D、执行3次
(  D  )
9、对下面程序段,描述正确的是________。 for(t=1;t<=100;t++)
{
scanf("%d",&x);
if (x<0) continue;
printf("%d\n",t);
}
A、当x<0时,整个循环结束
B、当x>=0时,什么也不输出
C、printf函数永远也不执行
D、最多允许输出100个非负整数
(  C  )
10、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是________。
A、int型
B、float型
C、double型
D、不确定
(  A  )
11、a,b均为整数,且b!=0,则表达式a/b*b+a%b的值是________。
A、a
B、b
C、a被b除的整数部分
D、a被b除的商的整数部分
(  B  )
12、有以下程序
main()
{
char p[]={'a', 'b', 'c'} , q[10]={'a', 'b', 'c'} ;
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是________。
A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B、由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C、由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D、由于p和q数组中都没有字符串结束符,故长度都不能确定
(  B  )
13、有以下程序
main()
{
int s=0,a=1,n;
scanf("%d",&n);
do
{
s+=1;
a=a-2;
}
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是________。
A、-1
B、-3
C、-5
D、0
(  D  )
14、若定义:int a=511,*b=&a; 则printf("%d\n",*b);
的输出结果为
A、无确定值
B、a的地址
C、512
D、511
(  D  )
15、要求函数的功能是交换 x 和 y 中的值,且通过正确调用返回交换结果 . 能正确执行 此功能的函数是______。
A、funa ( int *x , int *y )
{
int *p ; *p=*x ; *x=*y ; *y=*p ;
}
B、fund ( int x , int y )
{
int t ; t=x ; x=y ; y=t ;
}
C、func ( int *x , int *y )
{
*x=*y ; *y=*x ;
}
D、fund ( int *x , int *y )
{
*x=*x+*y ; *y=*x-*y ; *x=*x-*y ;
}
(  D  )
16、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
A、prinft ( " %c\n" , class[3].name );
B、printf ( " %c\n" , class[3].name[1] );
C、prinft ( " %c\n" , class[2].name[1] );
D、printf ( " %c\n" , class[2].name[0] );
(  C  )
17、以下对 c 语言中共用体类型数据的叙述正确的是______。
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不可以同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员
(  C  )
18、下列各项关于变量的描述中正确的是________。
A、变量名不是标识符
B、变量名的字符是不区分大小写的
C、变量名的定义必须符合标识符的定义规则
D、变量属性分为基本类型和复合类型
(  D  )
19、整型变量x和y的值相等,且为非0值,则以下选项中结果为0的表达式是______。
A、X||Y
B、X|Y
C、X&Y
D、X^Y
(  D  )
20、计算机病毒是一段程序,一般隐藏在______中。
A、控制器
B、运算器
C、只读存储器
D、可执行文件
(  D  )
21、若有以下定义,则能使值为3的表达式是 int k=7,x=12;
A、x%=(k%=5)
B、x%=(k-k%5)
C、x%=k-k%5
D、(x%=k)-(k%=5)
(  A  )
22、表示关系x<=y<=z的c语言表达式为______。
A、(x<=y)&&(y<=z)
B、(x<=y)and(y<=z)
C、(x<=y<=z)
D、(x<=y)&(y<=z)
(  C  )
23、下列关于形参的说法,正确的是________。
A、函数的形参是必须的
B、函数的形参可以是表达式
C、函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调用完毕也就被释放了
D、形参的名称、类型、数量、顺序必须与实参都相同,否则实参不会把信息正确地传递给形参
(  B  )
24、以下合法的赋值语句是______。
A、X=Y=100
B、D-;
C、X+Y;
D、C=int(A+B)
(  D  )
25、若有下面的说明和定义,则sizeof(struct aa)的值是________。
struct aa {
int rl;
double r2;
float r3;
union uu {
char u1[5];
long u2[2];
} ua;
} mya;
A、30
B、29
C、24
D、22
(  B  )
26、以下叙述中不正确的是________。
A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B、在C的函数中,最好使用全局变量
C、在C中,形式参数只是局限于所在函数
D、在C中,函数名的存储类别为外部
(  C  )
27、以下选项中属于c语言数据类型的是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  D  )
28、有以下程序:
#include<stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%5)==0)break;
else i--;
}
i+=13,a+=i;
}
printf("%d\n",a);
}
程序的输出结果是________。
A、62
B、63
C、23
D、36
(  A  )
29、有以下程序:
#include<stdio.h>
main() {
int c;
while((c=getchar())!=’\n’)
switch(c-’3’) {
case 0: case 1:putchar(c+4);
case 2:putchar(c+4);
break;
case 3:putchar(c+3);
case 4:putchar(c+3);
break;
}
printf("\n");
}
从第一列开始输入数据(<cr>代表一个回车符):3845<cr>,则程序输出结果为________。
A、77889
B、77868
C、776810
D、77886610
(  B  )
30、定义如下变量和数组: int k; int a[3][3]= {9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是________。
for(k=0;k<3;k++) printf("%d",a[k][k]);
A、7 5 3
B、9 5 1
C、9 6 3
D、7 4 1
(  D  )
31、下面关于函数依赖的叙述中,不正确的是________。
A、若X→Y,Y→Z,则X→YZ
B、若X→Y,Y'包含Y,则X→Y'
C、若X→Y,Y→Z,则X→Z
D、若XY→Z,则X→Z,Y→Z
(  D  )
32、以下正确的字符串常量是________。
A、"\\\"
B、'abc'
C、Olympic Games
D、""
(  D  )
33、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
A、-2
B、-1
C、0
D、-3
(  D  )
34、设函数定义如下: float f1(float a,float b)
{
return(a+b);
}
若有float x=1.1,y=2.2;
,则以下语句中正确的函数调用是________。
A、printf ("%f",f1();
B、printf ("%f",f1(&x,);
C、printf ("%f",f1(*x,*);
D、printf ("%f",f1(x,);
(  C  )
35、下列字符数组长度为5的是________。
A、char a[10]= { 'h','a','b','c','d' };
B、char b[]={ 'h','a','b','e','d','\0'};
C、char c[]={'h','a','b','c','d'};
D、char d[6]= {'h','a','b','c','\0'};
(  C  )
36、下列选项中,哪一项不是c语言的关键字________。
A、auto
B、int
C、add
D、goto
(  C  )
37、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  D  )
38、关于数组的定义与初始化,下列哪一项是错误的( )
A、int arr[5] = {1,2,3,4,5};
B、int arr[] = {1,2,3,4,5};
C、int arr[5] = { 1,2,3};
D、int arr[5] = {1,2,3,4,5,6};
(  C  )
39、有如下程序
main( )
{
int a=7,b=5,c=9;
if(a<b)if(b<0) c=0;
else c++;
printf("%d\n",c);
}
该程序的输出结果是______。
A、0
B、10
C、9
D、7
(  D  )
40、假定int类型变量占用4个字节,若有定义:int x[10]= {0,2,4}则数组x在内存中所占字节数是______。
A、4
B、12
C、20
D、40
(  B  )
41、能正确表示a≥10或a≤0的关系表达式是________。
A、a>=10 or a<=0
B、a>=10 || a<=0
C、a>=10 | a<=0
D、a>=10 && a<=0
(  C  )
42、若下列语句组,则输出结果是________。
int x=-1;
if(x++<0) printf("%d",--x);
printf("%d",x++);
A、-1
B、1
C、-1-1
D、-11
(  B  )
43、有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{
ptr=a+i;
scanf("%d",ptr);
ptr++;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
A、产生错误信息
B、10
C、12
D、1020 30 2000 00 30
(  D  )
44、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  B  )
45、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
A、&a[5]
B、p+2
C、a++
D、&a
(  A  )
46、设a=3,b=2,则表达式a^b>>2的值的二进制表示为________。
A、00000011
B、00000110
C、00000100
D、10
(  A  )
47、在c 语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个______。
A、函数
B、文件
C、变量
D、子程序
(  D  )
48、以下叙述正确的是()。
A、do-while 语句构成的循环不能用其它语句构成的循环来代替.
B、do-while 语句构成的循环只能用 break 语句退出.
C、用 do-while 语句构成的循环,在 while 后的表达式为非零时结束循环.
D、用 do-while 语句构成的循环,在 while 后的表达式为零时结束循环
(  B  )
49、若执行 fopen 函数时发生错误,则函数的返回值是()。
A、地址值
B、0
C、1
D、EOF
(  B  )
50、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);