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