C语言模拟题Word下载.docx
《C语言模拟题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言模拟题Word下载.docx(23页珍藏版)》请在冰点文库上搜索。
![C语言模拟题Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/0c99815e-56d8-4d5f-a400-8130389a7058/0c99815e-56d8-4d5f-a400-8130389a70581.gif)
int
a=2,*p;
float
x=1,y=2;
char
e=‘w’;
则以下用法不正确的是(
printf("
%c"
e+a);
p=&
x;
a*=y+x;
x=y=e;
9.intx=20;
printf("
%d\n"
~x);
以上程序片段的输出是(
235
-21
-20
-11
10.在C语言中,要求运算数必须是整型的运算符是(
/
++
!
=
%
11.若有定义:
inta=7;
floatx=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是(结果保留两位小数)(
2.50
2.75
3.50
0.00
12.以下运算符中优先级最低的是(
&
||
|
13.设有定义语句:
charc1=1,c2=1;
则以下表达式中值为零的是(
c1^c2
c1&
c2
~c2
c1|c2
14.以下程序的输出结果是
#include<
stdio.h>
voidmain()
{
unsignedchara,b;
a=0x0a|3;
b=0x0a&
3;
%d%d\n"
a,b);
}(
211
112
713
D:
137
15.如果inti=4,则printf("
%d"
-i--)的输出结果是(
),i的值是(
-4
3
-3
4
16.若x=2,y=3则x&
y的结果是(
5
17.下列程序的输出是(
main()
{intx;
(x=3*5,x*2,x+10));
}
15
25
30
40
18.若x,i,j和k都是int型变量,则计算下面表达式后,x的值为(
x=(i=4,j=16,k=32)
16
32
其他值
19.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(
7
8
20.以下程序运行后的输出结果是(
{inta,b;
a=50;
b=90;
(a,b));
90
5090
50
其他
21.以下程序的运行结果是(
inta=4;
charch=‘a’;
printf("
(a&
2)&
(ch>
‘A’));
22.以下程序的输出是:
(
main(
)
{inti,j=4;
for(i=j;
i<
=2*j;
i++)
switch(i/j)
{
case0:
case1:
*"
);
break;
case2:
#"
*###
**##
***#
****#
23.有如下程序片段:
inti=0;
while(i++<
=2);
i--);
则正确的执行结果是:
(
以上都不是
24.有以下程序段
{inti=1,sum=0,n;
scanf(“%d”,&
n);
do
i+=2;
sum+=i;
}while(i!
=n);
printf(“%d”,sum);
若使程序的输出值为15,则应该从键盘输入的n的值是(
25.
以下程序的输出是(
#include<
voidfun(int*p)
{
inta=10;
p=&
a;
++a;
}
voidmain()
inta=5;
fun(&
a);
a);
}
10
11
26.以下关于函数的说法中正确的是(
定义函数时,形参类型说明可放在函数体内
return语句后边的值不能为表达式
如果函数类型与返回值类型不一致,以函数类型为准
如果形参与实参的类型不一致,以实参为准
27.已知有定义:
int*p();
则以下说法正确的是(
指向int型的指针变量
int型的指针数组
一个函数,该函数的返回值是指向int型的指针变量
一个指向函数的指针变量,该函数的返回值为int型
28.若有如下程序:
voids(char*m,intn)
*m=*m+3;
n=n+3;
printf("
%c,%c,"
*m,n);
charp=‘b’,q=‘B’;
s(&
q,p);
%c,%c\n"
p,q);
}则程序运行后的输出结果是(
E,e,b,E
e,E,b,F
E,e,e,E
e,E,b,E
29.C语言规定函数返回值的类型由(
在定义时所指定的函数类型所决定
调用该函数时的主调函数类型所决定
return语句中的表达式类型所决定
调用该函数时系统临时决定
30.要在c语言中求正弦30度的值,可以调用库函数,可用格式为(
sin(30)
sin(30.0)
sin((double)30)
sin(3.1415/6)
31.在C语言程序设计中,简单变量作为实参时,它和对应形参之间的数据的传递方式是(
地址传递
单向值传递
由实参传给形参,再由形参传给实参
由用户指定传递方式
32.以下程序的输出为(
inta=2;
intf(int*a)
return(*a)++;
ints=0;
{inta=5;
s+=f(&
a,s);
27
210
37
311
33.以下程序输出结果是(
int*fun()
inta[4],k;
for(k=0;
k<
4;
k++)a[k]=k;
return(a);
{int*p,j;
p=NULL;
p=fun();
for(j=0;
j<
j++){printf("
*p);
p++;
输出0000
B:
输出0123
输出1111
输出不确定值
34.以下程序的运行结果是(
voidfun(int*n)
staticintm=2;
*n*=m-1;
m+=2;
staticintm=1;
inti;
for(i=1;
i<
i++)
m);
m);
35.下面对typedef的叙述中不正确的是(
用typedef可以定义各种类型名,但不能用来定义变量
typedef和#define都是在预编译时处理的
用typedef只是将已存在的类型用一个新的标识符来代表
使用typedef有利于程序的通用和移植
36.要使用内存分配函数malloc,需要引入的头文件是(
stdio.h
stdlib.h
malloc.h
memory.h
37.以下宏定义中,不会引起二义性的宏个数为(
1)#definePOWER(x)x*x
2)#definePOWER(x)(x)*(x)
3)#definePOWER(x)(x*x)
4)#definePOWER(x)((x)*(x))
1个
2个
3个
4个
38.若有二维数组定义语句:
inta[4][5];
则下面对元素a[2][3]不正确的引用方式是(
*(&
a[2][3])
*(a+5*2+3)
*(a[2]+3)
*(*(a+2)+3)
39.若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为(
j*m+i
i*m+j
i*m+j-1
j*m+i-1
40.有字符数组a[10]={‘A’,‘\0’}和b[10]={‘B’},则以下正确的输出语句是(
puts(a,b);
%s%s\n"
a[],b[]);
putchar(a,b);
puts(a);
puts(b);
41.下列程序的输出结果是(
string.h>
charp1[20]="
abcd"
p2[20]="
ABCD"
;
charstr[50]="
xyz"
strcpy(str+2,strcat(p1+2,p2+1));
%s\n"
str);
xyabcAB
abcABz
Ababcz
xycdBCD
42.以下程序执行后输出结果是(
chara[]="
movie"
b[10]="
sizeof(a),sizeof(b));
55
66
610
1010
43.以下程序的输出结果是(
char*p[10]={"
abc"
"
aabdfg"
dcdbe"
abbd"
cd"
};
strlen(p[4]));
编译出错
44.已知有以下的说明,
inta[]={8,1,2,5,0,4,7,6,3,9};
那么a[*(a+a[3])]的值为(
45.以下程序输出结果是(
#include
<
inta[2][2]={1,2,3,4},(*p)[2];
p=a;
p++;
**p);
以上都不对
46.设charch,str[4],*strp;
则正确的赋值语句是(
ch="
CBA"
str="
strp="
*strp="
47.下面程序的运行结果是(
fun(char*w,intn)
{chart,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<
s2){t=*s1++;
*s1=*s2--;
*s2=t;
{char*p;
p="
1234567"
fun(p,strlen(p));
puts(p);
7654321
1714171
1711717
7177171
48.以下程序的输出是()。
main(){
chara[]="
language"
*p;
p=a;
while(*p!
=‘u’){printf("
*p-‘u’+‘U’);
LANGUAGE
language
LANG
LANGuage
49.structs1
chara[3];
int
num;
}t={‘a’,‘b’,‘x’,4},*p;
t;
则输出为x的语句是(
printf(“%c\n”,p->
t.a[2]);
printf(“%c\n”,(*p).a[2])
a[3]);
printf(“%c\n”,(*p).t.a[2]);
50.以下程序的输出是(
structst
{intx;
inty;
}cnum[2]={1,3,2,7};
cnum[0].y/cnum[0].x*cnum[1].x);
51.以下对age的非法引用是(
struct
student
{intage;
intnum;
}stu1,*p;
stu1;
stu1.age
student.age
p->
age
(*p).age
52.以下程序的输出是(
unionmyun
{struct
{intx,y,z;
}u;
intk;
}a;
{a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
a.u.y);
53.若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式字符串应是(
ab+"
rb+"
wb+"
ab"
54.若执行fopen函数时发生错误,则函数的返回值是(
地址值
EOF
55.要打开文件c:
\user\text.txt用于追加数据,正确的语句是(
fp=fopen("
c:
\turboc2\abc.txt"
r"
\\turboc2\abc.txt"
\\turboc2\\abc.txt"
a+"
56.在执行fopen函数时,ferror函数的初值是(
TRUE
-1
57.#include
char*s1="
Hello"
*s2="
Beijing"
FILE*pf=fopen("
abc.dat"
fwrite(s2,7,1,pf);
fseek(pf,-1,SEEK_CUR);
fwrite(s1,5,1,pf);
fclose(pf);
以上程序执行后,文件abc.dat中的内容为(
Hellong
BeijingHello
BeijinHello
Hello
58.若fp为文件指针,且文件已正确打开,i为整型数据,以下语句的输出结果是(
fseek(fp,0,SEEK_END);
i=ftell(fp);
i=%d\n"
i);
fp所指的文件记录长度
fp所指的文件长度,以字节为单位
fp所指的文件长度,以比特为单位
fp所指的文件当前位置,以字节为单位
59.函数调用语句:
fseek(fp,-20L,2);
的含义是(
将文件位置指针移到距离文件头20个字节处
将文件位置指针从当前位置向后移动20个字节
将文件位置指针从文件末尾处后退20个字节
将文件位置指针移到离当前位置20个字节处
60.若将文件指针的读写位置指针移动到距离文件头200个字节的位置,对应正确的操作是(
fseek(fp,
200,SEEK_SET)
200,
SEEK_CUR)
200,SEEK_END)
ftell(200)
多选题(共20题,每题2分,共40分)
1.关于以下运算,说法正确的有(
设有宏定义"
#defineF(N)2*N"
则表达式F(2+3)的值是10
设intx=4;
则执行语句x+=x*=x+1;
后,x的值为40
设inta,b=8;
执行a=b<
<
2+1;
后a的值是33
设inta[3][4],*p=a[1];
该指针变量p指向的元素是a[1][0]
2.有以下定义:
chara[10],*b=a;
则能给a数组输入字符串的语句有(
gets(a);
gets(a[0]);
gets(&
a[0]);
gets(b);
3.要求函数的功能是在一维数组a中查找x值。
若找到,则返回所在的下标值;
否则,返回0。
设数据放在数组元素的a[1]到a[n]中。
在以下给出的函数中,不能正确执行此功能的函数有(
funa(int*a,intn,intx)
{
*a=x;
while(a[n]!
=x)n--;
returnn;
funb(int*a,intn,intx)
intk;
for(k=1;
k<
=n;
k++)
if(a[k]==x)returnk;
return0;
func(inta[],intn,intx)
int*k;
a[0]=x;
k=a+n