版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
历年计算机C语言选择题(一)
(总分100分,考试时长90分钟)
一、理论基础(每小题1分,共10分)
1、char型常量在内存中存放的是o
A、二进制代码值
B、十进制代码值
C、十六进制代码值
D、ASCH代码值
【答案】D
2、在c语言中,退格符是o
A、\n
B、\t
C、\v
D、\b
【答案】D
3、在c语言中,和存储所占用的字节数分别是。
A、1,1
B、1,2
C、2,1
D、2,2
【答案】B
4、设x为整型变量,和表达式”!(!x)”值完全相同的表达式是o
A、A==0
B、x=l
C、x!=0
D、x!=l
【答案】C
5、各种运算符间的优先顺序从高到低是o
A、比较运算符一算术运算符一逻辑运算符
B、比较运算符一逻辑运算符一算术运算符
C、算术运算符一比较运算符一逻辑运算符
D、算术运算符一逻辑运算符一比较运算符
【答案】C
【解析】对于多种运算的混合运算,一定要记住它们之间的优先级,否则就会
得到不同的计算结果。
6、下列符号中,可以作为变量名的是o
A、+c
B、*X
C、_DAY
D、next-day
【答案】C
7、在64位编译器环境下,int类型占多少字节?
A、2
B、4
C、1
D、8
【答案】B
8、以下各标识符中,合法的是。
A、A&M
B、_sum
C、float
D、2x1
【答案】B
9、若要求在if后一两圆括号中表示a不等于0的关系,则能正确表示这一关系
的表达式为O
A.a<>0
B、!a
C、a—0
D、a!=0
【答案】D
10、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值:
A、0
B、1
C、12
D、6
【答案】A
11、设有以下宏定义:
#defineN3
井defineY(n)((N+l)*n)则执行语句:z=2*(N-Y(5+l));后,z的值为
________o
A、出错
B、42
C、48
D、54
【答案】C
12、下列可用于c语言用户标识符的一组是o
A、void,define,WORD
B、a3_b3,_123,Car
C、For,-abc,IFCaso
D、2a,DO,sizeof
【答案】B
【解析】C语言规定标识符只能由字母、数字和六画线3种字符组成,且第一
个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能
为C语言的关键字,而选项A)中void为关键字,故排除选项A)0
13、以下4个选项中,不能看作一条语句的是o
A、;
B、a=5,b=2.5,c=3.6;
C、if(b!=5)x=2;y=6;
D、returnj;
【答案】C
【解析】c语言规定每个语句以;(分号)结束,因此选项C)为两条语句。
14、下列选择中,不能用做标识符的是o
A、1234
B、_1_2
C、int_2_
D、2_int_
【答案】D
15、数值型数据包括()两种。
A、整型和长整型
B、整型和浮点型
C、单精度型和双精度型
D、整型实型和货行型
【答案】B
16、以下不正确的定义语句是o
A、doublex[5]={2.0,4.0,6.0,8.0,10.0};
B、inty[5]={0,l,3,5,7,9};
C、charcl[]={'r,'2,,,3'/4,/5');
D、charc2[]={'\xl0',r\xar,'\x8,};
【答案】B
17、表达式的值为0的是o
A、5/5%5
B、5>2
C、!4
D、3>2&&5-6<7
【答案】C
18、已知英文字母m的ascii码值为109,那么英文字母p的ascii码值是
A、112
B、113
C、111
D、114
【答案】A
【解析】字母m与字母p的ASCII码值相差3,那么q的ASCH码值二109+3-
112o
19、若a是float型变量,b是unsigned型变量,以下输入语句中合法的
是()。
A、scanf(M%6.2f%d',,&a,&b);
B、scanf("%f%nn,&a,&b);
C、scanf(M%f%3oH,&a,&b);
D、scanf("%f%f*,,&a,&b);
【答案】C
20、执行下列语句后,:和n的值为________ointi=10;intn=i++%5;
A、10,0
B、10,1
C、11,0
D、11,1
【答案】C
二、控制结构(每小题1分,共10分)
1、C语言中,关系表达式和逻辑表达式的值是O
A、0
B、0或)
C、1
D、T或F
【答案】B
2、下列程序的输出结果是。
#include<stdio.h>
main()
(
inta=0,b=l,c=2;
if(++a>0||++b>0)++c;
printf("%d,%d,%d",a,b,c);
)
A、0,1,2
B、1,2,3
C、1,1,3
D、1,2,2
【答案】C
【解析】本题考查if语句。先判断if语句的条件是否成立,因为++a=1>0,
所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情
况下,不必判断另外一个运算对象的真假,即不进行++b操作,就可以直接得
出整个表达式的值为逻辑1,执行下面的++c。
3、c语言对嵌套if语句的规定是:else总是与()。
A、其之前最近的:f配对
B、其之前最近的且尚未配对的if配对
C、缩进位置相同的if配对
D、第一个if配对
【答案】B
4、下列程序的运行结果是o
main()
(
inta=-5,b=l,c=l;
intx=0,y=2,z=0;
if(c>O)x=x+y;
if(a<=0)
if(b>0)if"c<=O)y=x-y;
)
elseif(c>0)y=x-y;
elsez=y;
printf("%d,%d,%d\nM,x,y,z);
)
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
【答案】A
【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=l>
0,所以x=x+尸0+2=2。第1个if语句,因为a=-5V0,所以进入下列的复合
语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语
句退出,在这个过程中y和z的值没有发生变化。
5、c语言对嵌套的if语句的规定是:else总是与配对。
A、与之前最近的建
B、第一个if
C、缩进位置相同的if
D、与之前最近的且尚未配对的if
【答案】D
6、有以下程序
main()
(
inti;
for(i=0;i<3;i+-)
switch(i)
(
case1:printfi);
case2:printf("%d",i);
default:printf(w%d",i);
}
}
执行后输出的结果是0
A、011122
B、012
C、012020
D、120
【答案】A
【解析】当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语
句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,
包括在其后的所有case和default后的语句,直到switch语句体结束。
7、有如下程序
main()
(
intx=l,a=5,b=5;
switch(x)
(
case0:b-;
case1:a-;
case2:a—;
b一;
}
printf(,ra=%d,b=%d\n",a,b);
}
该程序的输出结果是o
A、a=3,b=4
B、a=3,b=3
C、a=4,b=5
D、a=4,b=4
【答案】A
8、有以下程序:
main()
(
inta=3,b=4,c=5,d=2;
if(a>b)if(b>c)printf('r%dn,d+++1);
elseprintf("%d",++d+l);
printf("%d\n",d;;
)
程序运行后的输出结果是______o
A、2
B、3
C、43
D、44
【答案】A
【解析】本题考查嵌套if语句中else的配对。本题中else和第二个if即
if(b>c)配对。由于a>b不成立,因此整个程序只输出printf("%d\n",d),
即输出2。
9、下列程序的输出结果是o
main()
{
inta=4,b=5,c;
if(a<b)
c=a*b;
printf("%d,%d,%d\n",b,a,c);
)
else
(
c=b/a;
printf(飞d,%d,%d\n",b,a,c);
)
)
A、4,5,12
B、20
C、5,4,20
D、12
【答案】C
【解析】本题考查ifelse语句。第一个if语句,先判断条件,发现aVb成
立,执行下列的复合语句,得c=a*b=20,b、a的值不变。
10、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误
信息的是O
A、if(x++);
B、if(x>y&&y!=0);
C、if(x>0)x—
D、if(y<0){;}
【答案】C
【解析】elsey++;elsex++;
本题考查的是if语句。if后表达式两侧的圆括号不可少,最后是一条语句或
是用花括号括起来的一组语句。选项A和B是在表达式后跟了一条空语句,选
项D是在表达式后跟了一组空语句,选项C中x一是表达式而不是语句,所以
在编译时会出现错误信息。故本题答案选C。
三、循环结构(每小题1分,共10分)
1、下列叙述中正确的是O
A、break语句只能用于switch语句体中
B、continue语句的作用是使程序的执行流卷跳出包含它的所有循环
C>break语句只能用在循环体内和switch语句体内
D、在循环体内使月break诸句和continue语句的作用相同
【答案】C
2、以下程序的输出结果是o
main()
{
inti=0,s=0;
for(;;)
if(i==6)break;
i++;
s+=i;
)
printf("%d\nn,s);
}
A、10
B、15
C、21
D、死循环
【答案】C
3、程序的基本控制结构是o
A、顺序结构,多分支结构和单分支结构
B、顺序结构,支结构和循环结构
C、顺序结构,选择结构和循环结构。
D、单行结构和多行结构。
【答案】C
4、有以下程序
#include<stdio.h>
main()
(
inti,n;
for(i=0;i<8;i++)
(
n=rand()%5;
switch(n)
(
case1:
case3:
printf("%d\n",n);
break;
case2:
case4:
printf(M%d\n",n);
continue;
case0:
exit(0);
}
printf(w%d\n*,n);
)
)
以下关于程序执行情况的叙述,正确的是一
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行
【答案】D
【解析】阅读本程序可知,当产生随机数为4时,会继续执行循环;当产生随
机数为1和2时,会顺势执行case1或case2下面的语句,进而输出结果;
当产生随机数为0时,正常结束程序的运行。for循环语句随着产生的随机数
的不同,执行的次数也不相同。
5、假定等级和分数有以下对应关系:等级:a分数:85〜100等级:b分
数:60〜84等级:c分数:60以下对于等级grade榆出相应的分数区
间,能够完成该功能的程序段是.
A、switch(grade)
(
case1A':printf("85--100\n");
casefB):printf("60—84\nn);
caserC':printf(M60以下\nH);
default:printf(H等级错误!\nH);
)
B、switch(grade)
(
case'A':printf("85―100\n");break;
caserB':printf("60—84\n");
caserC':printf("60以下\n,f);
default:printf(,'等级错误!\n");
)
C、switch(grade)
(
case'A':printf("85―100\n");break;
caserB':printf("60—84\n");break;
case'C':printf(M60以下\nw);
default:printf(n等级错误!\nH);
)
D、switch(grade)
(
case1A':printf("85-100\n");break;
caserB':printf("60—84\n");break;
case'C:printf("60以下\n");break;
default:printf(r,等级错误!\nH);)
【答案】D
6、若变量已正确定义,有以下程序段i—。;
doprintf(,F%d,",i);
whi1e(i++);
printfi)其输出结果是。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
【答案】B
7、以下程序的执行结果是mainO
{intx=0,s=0;
whi1e(!x!=0)s-=++x;
printf(n%dM,s);)
A、0
B、1
C、语法错误
D、无限循环
【答案】B
8、程序语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体
的while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循
环结构,在不改变循环体的条件下,(17)是正确的。
A、while语句的功能可由do-while语句实现
B、do-while语句的功能可由while语句实现
C、若已知循环体的次数,则只能使用while语句
D、循环条件相同时,do-while语句的执行效率更高
【答案】B
【解析】本题考查程序的控制结构。
do-while语句的形式为:
do
循环体语句;
while循环条件;
首先执行一次循环体语句(无条件地),若循环条件不成立,则结束do-
while语句的执行;否则再一次执行循环体语句,即,此后循环条件每成立一
次,循环体语句就执行1次。显然,do-while中的循环体语句至少执行1次。
while语句的形式为:
while循环条件
循环体语句;
其执行过程为:先判断循环条件,若不成立,则结束while语句的执行;
否则执行一次循环体语句。此后循环条件每成立一次,循环体语句就执行1
次。显然,while中的循环体语句可能一次也不执行。
因此,在不改变循环体的情况下,可用while语句来代替do-whilc语句,
反之则不行。
9、有以下程序
^include<stdio.h>
main()
{
inti,j,m=l;
for(i=l;i<3;i+-)
for(j=3;j>0;j—)
if(i*j>3)break;
)
)
printf("m=%d\nH,m)
)
程序运行后的输出结果是0
A、m=6
B、m=2
C、m=4
D、m=5
【答案】A
10、有以下程序
main()
(
inti,j;
for(i=l;i<4;i।)
(
for(j=i;j<4;j++)printf(,r%d*%d=%d
printf(,r\n");
)
}
程序运行后的输出结果是o
A、1*1=11*2=21*3=3
2*1=22*2=42*3=6
3*1=33*2=63*3=9
B、1*1=11*2=21*3=3
2*2=42*3=6
3*3=9
C、1*1=1
D、1*1=11*2=2
2*1=22*2=4
3*3=9
【答案】B
【解析】本题考查的是循环嵌套。在一个循环体力又完整地包含了另一个循
环,称为循环嵌套。外循环i的值分别为1、2、3,当i=l,内循环j=l时,输
出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当
i=2,内循环户2时,瑜出2*2=4;当内循环户3时,输出2*3=6;当i=3,内
循环j:3时,输出3*3=9。
四、数组/指针数组(每小题1分,共10分)
1、合法的数组定义是________O
A、inta[]="string”;
B、inta[5]=0,1,2,3,4,5;
C、chara="string”;
D、chara=0,1,2,3,4,5;
【答案】D
2、对长度为8的数组进行快速排序,最多需要的比较次数为o
A、8
B、28
C、56
D、64
【答案】B
【解析】对长度为n的线性表进行快速排序,最坏情况下需要比较的次数为
n(n-1)/2.数组属于线畦表,故对长度为8的数组进行快速排序,最多需要的比
较次数为8(8-1)/2=28.本题答案为B选项。
3、对以下说明语句inta[10]={6,7,8,9,10};的正确理解是()。
A、将5个初值依次赋给a[l]至a[5]
B、将5个初值依次赋给a[O]至a[4]
C、;将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值的个数不相同,所以此语句不正确
【答案】B
4、有如下程序
#include<stdio.h>
voidmainO
{
charch[80]=H123abcdefg*&'r;
intj;
longs=0;
puts(ch);
for(j=0;ch[j]>'\0';j++)if(ch[j]>='a'&&ch[j]<='z')
ch[j]=ch[j]+,e,-,e';
puts(ch);
)
该程序的功能是.
A、测字符数组ch的长度
B、将数字字符串ch转换成十进制数
C、将字符数组ch中的小写字母转换成大写
D、将字符数组ch中的大写字母转换成小写
【答案】D
5、若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素
是。
int[3][3L*pt[3],k;
for(k=0;k<3;k++)
pt[k]-&t[k][0];
A、t[2]Eo]
B、t[2][2]
C、tell[2]
D.t[2][l]
【答案】C
6、已知英文字母a的十进制ascii码值为65,那么a的十进制ascii码值为
A、98
B、100
C、89
D、97
【答案】D
【解析】在ASCII码表中,大、小写英文字母是分组排序安排在不同位置的,
并且小写英文字母的码值比对应的大写英文字母的码值大32。所以,当知道A
的ASCII码值是65后,字符a的码值为65+32=97。
7、阅读下列程序段:chars[18]="abook!H;printf("%.4s\n",s);
其输出结果为________o
A、abook!
B、abook
Csabo
D、a
【答案】C
【解析】"abook!”在字符数组中是按单个字符存储的,包括空格,以4s是输
出前四个字符。
8、若有说明语句"inta[5],*p=a;二则对数组元素的正确引用是。
A、a[p]
B、p[a]
C、*(p+2)
D、p+2
【答案】C
9、若有说明:int@[][3]={{1,2,3},{4,5},{6,7)};则数组@的第一维的大小
为:()
A、2
B、3
C、4
D、无确定值
【答案】B
10、下列一维数组定义正确的是________。
A、x=5;intnum[x];
B、constihtx=5;floatnum[x];
C、constfloatx=5;intnum[x];
D、constintx;x=5;intnum[x];
【答案】B
【解析】数组的下标不能是变量,不能为非整数,定义为常量的标识符不能再
用来赋值,只能在定义时初始化。
五、字符串/字符串指针(每小题1分,共10分)
1、\、/、mod、*等4个算术运算符中,优先级最低的是o
A、\
B、/
C、Mod
D、*
【答案】C
【解析】[知识点]模块/VBA编程基础
在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求
解,称这个顺序为运算符的优先顺序。而算术表达式的优先顺序从高到低分别
为:指数运算(八)、负数(-)、乘法和除法(*、/)、整数除法(\)、求模运算
(Mod)、加法和减法(+、-)、小字符串连接(&)。
2、判断字符串a和b是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C^if(strcmp(a,b))
D、if(strcmp(a,b)==0)
【答案】D
3、以下语句中,不能实现回车换行的是()。
A、printf(w\nM);
B、putchar('An1');
C、fprintf(stdout,"Xn,1);
D、fwrite(tt\nH,1,1,stdout);
【答案】B
4、下列数据中为字符串常量的是
A、'A'
B、"9"
C、Howdoyoudo
D、'$abd'
【答案】B
5、char*s="\t\\name\\address\n";指针s忻指字符串的长度为:。
A、说明不合法
B、19
C、18
D、15
【答案】D
6、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
【答案】B
【解析】宏定义用于将一个标识符定义为一个字符串
7、下列类型的数据不可以存储在可变型变量中的是_______o
A、整型
B、字节型
C、单精度型
D、日期型
【答案】B
【解析】本题考查可变型变量。可变型变量可以存储9种类型的数据:空、
NULL型、整型、长整理、单精度型、双精度型、货币型、日期型和字符串型。
选项A错误,整型数据可以存储在可变型变量中;选项B正确,字节型数据不
可以存储在可变型变量中;选项C错误,单精度型数据可以存储在可变型变量
中;选项D错误,日期型数据可以存储在可变型变量中。答案为B。
8、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是
A、大写字母
B、连接符
C、数字字符
D、下划线
【答案】B
【解析】C语言的标识符要符合以下规定:
①标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符
串:
②标识符不能与任意一个关键字同名:
③标识符中的字母区分大小写。
故本题应该选择B。
9、下面各语句行中,能正确进行字符串赋值操作的语句是______。
A、charST[5]={',ABCDEH);
B、charS[5]={'Af,'B',,C,,'D','E'};
C、char*S;S="ABCDEM;
D、char*S;scanf("%SM,S);
【答案】C
10、设pl和p2是指向同一个字符串的指针变量,c为字符变量,则以下不
能正确执行的赋值语句是()。
A、c=*pl+*p2;
B、p2=c;
C、pl=p2;
D、c=*pl*(*p2);
【答案】B
六、函数/函数指针(每小题1分,共10分)
1、下面函数定义形式正确的是。
A、intf(intx;inty)
B、intf(intx,y)
C、intf(int,inty)
D、intf(x,y:int)
【答案】C
2、结构化程序设计方法的三种基本控制结构中不包括(.)o
A、循环结构
B、递归结构
C、顺序结构
D、选择结构
【答案】B
3、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A、INPUTx、v、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
【答案】B
【解析】考查格式输入函数scanf的使用。
[解题要点]scanf函数的一般格式是:
scanf(格式控制,地址表列)
该格式中,地址表列中应是变量地址,而不是变量名。
[考点链接]调用putchar和getchar函输出和输入字符。
4、c语言规定,在一个源程序中,main函数的位置。
A、必须在最开始
B、必须在系统调月的库函数的后面
C、可以任意
D、必须在最后
【答案】C
【解析】C程序总是从main函数开始执行,但main函数在程序中的位置可以
是任意的。
5、以下叙述中正确的是。
_A、在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地
表不
B、C程序由主函数组成
C、C程序由若干函数组成
D、C程序中只允许包含一个函数
【答案】C
6、结构化程序设计所规定的三种基本控制结构是。
A、输入、输出、处理
B、顺序结构、选择结构、循环结构
C、for、whilexswitch
D、主程序、子程序、函数
【答案】B
【解析】结构化程序有三种基本结构组成,分别是顺序结构、选择结构和循环
结构。
7、若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函
数声明语句中正确的是________O
A、intfun(doubleX,int*n);
B、intfun(double,int);
C、intfun(double*X,intn);
D、intfun(double*int*);
【答案】C
【解析】函数首部intfun(doublex[10],int:n)表示这个函数的返回值是整
型,箕第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指
针。在C语言中,一维数组的名字表示的是一维数组的地址,所以选项D)是正确
的。
8、下列程序的输出结果是o
intfl(intx,inty)
returnx>y?x:y;
)
intf2(intx,inty)
returnx>y?y:x;
)
main()
inta=4,b=3,c=5,d=2,e,f,g;
e=f2(fl(a,b),fl:c,d));
f=fl(f2(a,b),f2:c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\nM,e,f,g);
}
A、4,3,7
B、3,4,7
C、5,2,7
D、2,5,7
【答案】A
【解析】根据函数intfl(intx,inty){
returnx>yx:y;}和intf2(intx,inty){
returnx)>y:x;}的定义可知,如果x>y成立,则函数fl返回x的值,函
数f2返回y的值。所以fl(a,b)=4,fl(c,d)=5,f2(a,b)=3,f2(c,d)=2,故
e=f2(4,5),f=fl(3,2)=3,g=4+3+5+2-4-3=7。
9、以下叙述中,不正确的是________o
A、在一个函数中,可以有多条retuiri语句
B、函数的定义不能嵌套,但函数的调用可以嵌套
C、函数必须有返回值
D、不同的函数中可以使用相同名字的变量
【答案】C
【解析】函数不一定有返回值。
10、以下叙述正确的是________O
A、在C语言程序口,main函数必须位于程序的最前面
B、C语言程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C语言程序进行编译的过程,可发现注释中的拼写错误
【答案】C
【解析】考查C语言的几个基本概念。
[解题要点]选项A)中,main函数可以放在程序的任何位置,不一定要放在程
序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开
始的;选项B)中,因为C语言的语法限制不严格,所以可以多条语句放在同一
行上;选项C)是正确的,C语言中没有专门的输入输出语句,输入输出是通过
使用输入输出库函数来实现的;选项D)是错误的,因为C语言中的注释是入会
被编译的a
[考点链接]掌握算法的相关特性。
七、指针(每小题1分,共10分)
1、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是
A、实参将其地址传递给形参,并释放原先占用的存储单元
B、实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C、实参将其值传递给形参,调用结束时形参再将其值回传给实参
D、实参将其值传递给形参,调用结束时形参并不将其值回传给实参
【答案】D
2、inta[10];
合法的数组元素的最小下标值为一
A、10
B、9
C、1
D、0
【答案】D
3、一个c语言程序总是从开始执行。
A、主过程
B、主函数
C、子程序
D、主程序
【答案】B
4、数组a[0…5,0…6]每个元素占5个单元,将其按列优先次序存储在起始地址
为1000的连续内存单元中,则元素a[5][5]的地址为________o
A、1175
B、1180
C、1205
D、1210
【答案】A
【解析】本题主要考查的知识点是二维数组元素的地址计算。
[要点透析]a[5][5]的地址是1000+(5X6+5)X5=1175e
5、字符串',\\\ffabc\,\\N的长度是o
A、11
B、7
C、5
D、3
【答案】B
6、程序流程图中指有箭头的线段表示的是________o
A、图元关系
B、数据流
C、控制流
D、调用关系
【答案】C
7、以下正确的描述是________。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均不可以嵌套
D、函数的定义和函数的调用均可以嵌套
【答案】B
8、设有以下函数:
^include<stdio.h>
intf(inta)
{
intb=0,c;
c=3;
b++;
c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是.
voidmain()
{
inti;
for(i=0;i<3;i+-)
printf("%d\n",f(i));
}
A、567
B、579
C、345
D、333
【答案】B
9、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
voidreverse(inta[],intn)
(
inti,t;
for(i=0;i<n/2;i++)
(
t=a[i];
a[i]=a[n-l-i];
a[n-l-i]=t;
)
}
main()
(
intb[10]={l,2,3,4,5,6,7,8,9,10};
inti,s=0;
reverse(b,8);
for(i=6;i<10;i-+)s+=b[i];
printf("%d\n",s);
)
程序运行后的输出结果是。
A、22
B、10
C、34
D、30
【答案】A
10、若有以下定义和语句:doubler=99,*p=&r;*p=r;则以下正确的叙述
是______。
A、以下两处的*p含义相向,都说明绐指针变量p赋值
B、在"doubler=99,*p=&r;"中,把r的地址赋值给了p所指的存
储单元
C、语句H*p=r;”把变量r的值赋给指针变量p
D、语句H*p=r;"取变量r的值放回r中
【答案】D
八、结构体(每小题1分,共10分)
1、有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b。则
不能把结点b连接到结点a之后的语句是________o
structnode
(
chardata;
structnode*next;
)
a,b,*p=&a,*q=&b;
A.3475
B、3574
C、1234
D、1235
【答案】B
【解析】在被调用过程中,有这样的语句“StaticSum”,因为变量Sum是局
部变量,局部变量除了可以用Dim语句声明外,还可用Static语句将变量声明
为静态变量,它在程序运行过程中可保留变量的嗔,这就是说每次调用过程
时,用Static说明的变量保持原来的值。具体过程分析如下:调用P(l),
所以在被调过程中N=l,执行ForNext循环,P(l)=Sum=l;调用P(2),配以
在被调过程中N=2,执行ForNext循环,P(2)=Sum=4;调用P(3),所以在被
调过程中N=3,执行ForNext循环,P(3)=Sum=10;调用P(4),所以在被-周过
程中N=4,执行ForNext循环,P(4)=Sum=20;不难看出,最后输出的结具S
值应为1+4+10+20=35,所以选项C)正确。
2、设有以下语句:
typedefstructtt(charc;inta[4];}cin;则下面叙述中正确的是
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是structTT类型的变量
【答案】C
【解析】将题目中的定义语句去掉前面的typedef和后面的CIN(分号保留),
就是一条完整的结构体定义语句,其中struct是说明符,TT是结构体名,大
括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct
加结构体名一起来声明,structTT一起构成一人结构体类型,就好像字符类
型char。若只去掉前面的typedef,就是一条结构体定义同时声明个结构体变量
CIN的语句,因为CIN的前面部分是structTT的完整写法,可以看作是
structTToC语言允许用typedef说明一种新类型名,其语法格式为:
typedef类型名标汉符;
以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在
typedef时,该语句就变成了给structTT的定义一个新的名称CIN。所以,此
时的CIN是一个结构体类型,它相当于structTT,即可以和char一样单独用
来声明该结构体变量,而TT只是一个结构体名,不能单独用来声明变量。所
以,4个选项中C符合题意。
3、有以下程序
structs
(
intx,y;
)
data[2]={10,100,20,200);
main()
structs*p=data;
printf("%d\n,',+-(p->x));
}
程序运行后的输出结果是________0
A、10
B、11
C、20
D、21
【答案】B
4、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是o
structst
{
intx;
inty;
intz;
)
structworker
(
charname[20];
charsex;
structstbirth;
}P;
A、x=1987
B、birth.x=1987;
C、p.birth.x=1987;
D、x=1987;
【答案】C
【解析】本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的
birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,
要用运算再深入一层访问到最基本的成员x、y、Zo
5、c语言中,switch后的括号内表达式的值可以是o
A只能为整型
B:只能为整型,字符型,枚举型
C、只能为整型和字符型
D、任何类型
【答案】D
6、若有以下说明语句:
structstudent
(
intnum;
charnamet];
floatscore;
}stu;
则下面的叙述不正确的是:()
A、struct是结构为类型的关键字
B、structstudent是用户定义的结构体类型
C、num,score都是结构体成员名
D、stu是用户定义的结构体类型名
【答案】D
7、以下叙述中正确的是o
A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
【答案】A
【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新
的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型
的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定
义。
8、以下scanf函数调用语句中不正确的是
structpupi1
(
charname[20];
intage;
intsex;
)
pup[5],*p=pup;
A、scanf,pup[0].name);
B、scanf&pup[0].age);
C、scanf(M%d,r,p->age);
D、scanf(M%d,r,&(p->sex));
【答案】C
9、定义共用体的关键字是——
A、union
B、enum
C、struct
D、typedef
【答案】A
10、有以下结构体说明、变量定义和赋值语句
structstd
(
charname[10];
intage;
charsex;
)
s[5],*ps;
ps=&s[0];
则以下scanf函数调民语句中错误引用结构体变量成员的是
A、scanf("%SM,S[0].name);
B、scanf(n%dn,&s[0].age);
C、scanf("%C",&(ps->sex));
D、scanf("%dr,,ps->agc);
【答案】D
【解析】在scanf函数中,第二个参数应该表示为地址变量,而选项D)只是一个
具体的值,而并不是一个地址值。
九、程序题(每小题1分,共10分)
1、以下程序的输出结果是。
#defineA3
#defineB(A)((A+1)*A)
main()
(
intx;
x=3*(A+B(7));
printf(Mx=%4d\n",x);
)
A、93
B、135
C、54
D、251
【答案】A
2、下述程序的输出结果是o
main()
(
intb[]={2,4,6,8,10,12};
int*p=b,**q=&p;
printf("%d,”,*(p++));
printf("%d,",**q);
)
A、4,4
B、2,2
C、4,5
D、2,4
【答案】D
3、以下程序运行后的瑜出结果是.
#include<stdio.h>
voidmain()
(
inti=10,j=0;
do
(
j=j+l;
i一;
)
while(i>2);
printf("%d\n",j);
)
A、50
B、52
C、51
D、8
【答案】D
4、以下程序的运行结果是o
main()
(
inti=l,sum=0;
whilc(i<10)sun=sum+l;
i++;
printf("i=%d,sun=%d,i,sum);
)
A、i=10,sum=9
B、i=9,sum=9
C、i=2,sum=l
D、运行出现错误
【答案】D
5、有以下程序
main()
(
intx[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("%d\n",s[2]);
)
执行后输出结果是________。
A、随机值
B、0
C、5
D、6
【答案】B
6、有以下程序:
^include<stdio.h>
main()
{
chara,b,c,d;
scanf(,,%c%cn,&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
)
当执行程序时,按下列方式输入数据(从第1列开始,Vcr>代表回车,注意:回车
也是一个字符)12<cr>34<cr>则输出结果是______。
A、12
34
B、12
C、1234
D、12
3
【答案】D
【解析】按照从键盘输入的数据可以判断字符1洽了变量a,字符2给了变量
b,字符VCR>即回车洽了变量c,字符3给了变量d。所以打印输出的结果为
D选项。
7、以下程序输出的结果是.
^include<stdio.h>
voidmain()
(
charstr[]=r,la2b3c";
inti;
for(i=0;str[i]!='\0';i++)if(str[i]>='0'&&str[i]<=,9')
printf("%cv,str[i]);
printf("\nv);
)
A、123456789
B、la2b3c
C、abc
D、123
【答案】D
8、下面程序的输出结果是o
main()
(
externintm;
m+=2;
f();
printf("%d\n",m);
)
intm=7;
f()
{
printf;
m+=m;
}
A、8118
B、81&81
C、18&18
D、81&18
【答案】D
9、有以下程序
#include<stdio.h>
voidfun(char*t,char*s)
(
while(*t!=0)t+-;
while((*t++=*s+-)!=0);
)
min()
(
charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s\n'r,ss,aa);
)
程序的运行结果是o
A、accxyy,bbxxyy
B、axx,bbxxyy
C、accxxyy,bbxxyy
D、accbbxxyy,bbxxyy
【答案】D
10、下列程序的输出结果是
#include<stdio.h>
intmyfuntion(intn);
intmain()
(
intentry=12345;
printf("%5dn,myfuntion(entry));
return0;
)
intmyfuntion(intpar)
{
intresult;
result=0;
do
(
result=result*10+par%10;
par/=10;
)
while(par);
returnresult;
)
A、12345
B、543
C、5432
D、54321
【答案】D
历年计算机C语言选择题(二)
(总分100分,考试时长90分钟)
一、理论基础(每小题1分,共10分)
1、以下叙述中正确的是一
A、C程序中的注释只能出现在程序的开始位谿和语句的后面
B、C程序书写格式严格,要求一行内只能写一个语句
C、C程序书写格式自由,一个语句可以写在多行上
D、用C语言编写的程序只能放在一个程序文件中
【答案】C
2、在位运算中,操作数每右移一位,其结果相当于()
A、操作数乘以2
B、操作数除以2
C、操作数除以16
D、操作数乘以16
【答案】B
【解析】本题考查的知识点是:右移运算。根据右移运算的原理,右移一位相
当于操作数缩小为原来的二分之一,故本题选B)。
3、以下选项中不正确的整型常量是。
A、12L
B、-10
C、12
D、2,900
【答案】D
4、以下数值中,不正确的八进制数或十六进制数是o
A、0x16
B、016
C、-16
D、Oxaaaa
【答案】C
5、计算机之所以能按人们的意图自动进行工作,最直接的原因是因为采用了
A、二进制
B、高速电子元件
C、程序设计语言
D、存储程序控制
【答案】D
【解析】电子计算机能够快速、自动、准确地按照人们地意图工作的基本思想
最主要是存储程序和程序控制,这个思想是由冯•诺依曼在1946年提出的。
6、在微机汉字系统中,一个汉字的机内码占的字节数是________o
A、1
B、2
C、4
D、8
【答案】B
7、指针变量p进行自加运算(即执行p++;)后,地址偏移值为4,则其数据类型
为。
A、int
B、float
C、double
D、char
【答案】A
8、doublex;scanf(*%lf'\&x);不可以赋值给x变量的常量是„
A、123
B、100000
C、A'
D、"abc"
【答案】D
9、若有说明:int*pl,*p2,m=5,n;
以下均是正确赋值语句的选项是O
A、pl=&m;
B、p1=&m;p2=&n;*p1=*p2;
C、pl=&m;p2=pl;
D、pl=&m;*p2=*pl;
【答案】C
10、关于字符型变量的定义,下列选项正确的是O
A、charch=a;
B、charch='a1;
C、charch="a";
D、charch=\a;
【答案】B
【解析】字符型变量的值要用一对英文半角格式的单引号('')把字符括是
来。
11、设c语言中,一个int型数据在内存中占2个字节,则unsignedint型数
据的取值范围为_______O
A、0-255
B、0-32767
C、0-65535
D、0-2147483647
【答案】C
12、在下列字符序列中,合法的标识符是________o
A、P12&.a
B、stud_100
C、$water.12
D、88sum
【答案】B
13、下列哪个赋值语句是不正确的
A、floatf=ll.1;
B、doubled=5.3E12;
C、floatd=3.14f;
D、doublef=ll.lElOf;
【答案】A
【解析】浮点型数的赋值,带有小数点的数字缺省是double型的,如果在浮点
数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式
的浮点数也是double型的,而double的精度比float高,将一个高精度的
double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。
14、下列选项中,不正确的赋值语句是
A、++
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年电力线路检修与修缮合同3篇
- 2024年电子产品批量采购协议样本版B版
- 2024年度员工出差安全教育培训及考核协议书2篇
- 2024年能源基础设施建设项目合同
- 2024年购销合同标的详细说明
- 沉井施工合同
- 体育赛事组织服务合同
- 2024年大数据产业发展合同
- 技术转移服务及推广应用协议
- 场地空地出租合同范本3篇
- 2024-2030年全球与中国汽车音频DSP芯片组市场销售前景及竞争策略分析报告
- 2025届广州市高三年级调研测试(零模)数学试卷(含答案)
- 整本书阅读《乡土中国》课件 2024-2025学年统编版高中语文必修上册
- 2025年“两新”领域超长期特别国债项目申报策略
- 2025礼品定制合同范本
- 医院消毒隔离制度范文(2篇)
- 2024年01月11026经济学(本)期末试题答案
- 烘干煤泥合同范例
- 4.1.1陆地水体间的相互关系课件高中地理湘教版(2019)选择性必修一
- 【MOOC】大学生心理学-中央财经大学 中国大学慕课MOOC答案
- 2025年“三基”培训计划
评论
0/150
提交评论