版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林电子科技大学
C语言专升本练习(一)
总分:100分考试时间:60分钟
注意事项:
>答题前要仔细阅读答题卡上的“考生须知填好姓名、准考证号填写清楚,字迹不能
超出框线。
>考生必须在答题卡上与题号相对应的答题区域内答题,书写在试卷(题签)、草稿纸上
或答题卡上非题号对应的答题区域的答案一律无效。
>考试中途不能无端离场,否则视为放弃。
一、单项选择题(每小题2分,共100分)
1、关于异常的含义,下列描述中最正确的一个是。
A、程序编译错误
B、程序语法错误
C、程序自定义的异常事件
I)、程序编译或者运行时发生的异常事件
【答案】D
【解析】异常是在程序编译或运行中所发生的可预料的或不可预料的异常事
件,它会引起程序的中断,影响程序正常运行。
2、下面程序段的输出结果是。
#include<stdio.h>
main()
(
floatx=l.236547;
printf(n%f\nn,(int)(x*1000+0.5)/(float)1000);
}
A、1.237000
B、输出格式说明与输出项不匹配,输出无定值
C、1.236000
D、1.24
【答案】A
【解析】本题中,(int)(x*1000+0.5)的结果为(237,(float)1000是将1000
强制转换成float类型;整个表达式(int)(x*1000+0.5)/(float)1000的结果
为1.237000,再以实数(6位小数)形式输出。
3、下列表达式为关系表达式的为o(其中a为一整型变量)
A、3+4*5
B、a==10
C^a>Oa:-a
D、a=l
【答案】B
4、以下程序的输出结果是。
main()
(
inta=l,b=O,x=l,y=l;
switch(a)
(
case1:switch(b)
(
case0:x++;
break;
casel:y++;
break;
)
case2:x++;
y++;
break;
)
printf(M%d,%d\nn,x,y);
A、2,1
B、2,3
C、3,2
D、32
【答案】C
5、若要定义a为3X4的二维数组,正确的定义语句是一
A、floata(3,4);
B、floata[3][4];
C、floata(3)(4);
D、floata[3,4];
【答案】B
6、下列语句序列执行后,i的值是。inti=10;do(i-=2;}while(i>6);
A、10
B、8
C、6
D、4
【答案】C
7、有以下程序
main()
(
charp[]={'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
8、c程序中的宏展开是在。
A、编译时进行的
B、程序执行时进行的
C、编译前预处理时进行的
D、编辑时进行的
【答案】C
9、以下关于字符串的叙述中正确的是o
A、c语言中有字符串类型的常量和变量
B、两个字符串中的字符个数相同时才能进行字符串大小的比较
C、可以用关系运算符对字符串的大小进行比较
D、空串一定比空格打头的字符串小
【答案】D
10,将二进制数101101101111转换成十六进制数是。
A、5557
B、B6F
C,7555
D、F6B
【答案】B
11、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长
度小于6,则输出按方式。
A、从左起输出该字符串,右补空格
B、从右起输出该字符串,左补空格
C、0
D、输出错误信息
【答案】A
12、在位运算中,操作数每左移两位,其结果相当于o
A、操作数乘以2
B、操作数除以2
C、操作数除以4
D、操作数乘以4
【答案】D
13、以下叙述中正确的是。
A、两个字符串可以用关系运算符进行大小比较
B、函数调用strlen(s)会返回字符串s实际占用内存的大小(以字节为单位)
C、C语言本身没有提供对字符串进行整体操作的运算符
D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
【答案】C
【解析】本题考查字符串处理函数strlen、strcatstrcmp.b选项中strlen
返回的是字符串s实际占用内存大小加上结尾符A选项中不能用关系运算符
进行大小比较,可以使用strcmpD选项当使用strcat连接函数时,内存空间
会减少一个字符位置。
14、以下叙述正确的是o
A、C程序中各函数之间既允许直接递归调用,也允许间接递归调用
B、C程序中各函数之间不允许直接递归调用,也不允许间接递归调用
C、C程序中各函数允许直接递归调用,不允许间接递归调用
D、C程序中各函数之间不允许直接递归调用,允许间接递归调用
【答案】A
15、下面程序的输出结果是.
#include<stdio.h>
voidmain()
(
inta=5,b=3;
floatx=3.14,y=6.5;
printfCr%d,%d\n",a+b!=a-b,x<=(y-=6.1));
)
A、1,0
B、0,1
C、1,1
D、0,0
【答案】A
16,break语句的正确的用法是_______。
A、无论在任何情况下,都中断程序的执行,退出到系统下一层。
B、在多重循环中,只能退出最靠近的那一层循环语句。
C、跳出多重循环。
I)、只能修改控制变量。
【答案】B
17、在函数声明中,下面哪项是不必要的。
A、函数参数的类型和参数名
B、函数名
C、函数的类型
D、函数体
【答案】D
【解析】本题考核函数的原型声明格式。解析此题时,要注意函数定义和函数
声明的区别。
①C中每一个函数的定义都是由4个部分组成的,即函数类型、函数名、函
数参数表和函数体。
②函数的声明是为了消除函数定义的位置影响。不管函数是在何处定义的,
只要在调用前进行函数的声明,就可保证函数调用的合法性。
③函数原型的说明格式为:
V类型〉〈函数名〉(<形参表>);
18、以下语句段执行后的输出结果是________0
#include<stdio.h>
main()
(
intk=3;
if(k)printf("###")elseprintf("&&&&");
)
A、###
B、&&&&
C、###&&&&
D、有语法错误,不能执行
【答案】D
【解析】在C语言中语句结束时应该以分号结尾,程序中的第1个
printf(〃###")输出语句后面少了一个分号(;),因此执行程序时会出错。
19、已知p,pl为指针变量,a为数组名,j为整型变量,下列赋值语句中不正确的是—
A、p=&j,p=pl;
B、p=a;
C、p=&a[j];
D、p=10;
【答案】D
20、设有以下语句
typedefstructs
(
intg;
charh;
}
t;
则下面叙述中正确的是。
A、可用S定义结构体变量
B、可以用T定义结构体变量
C、S是struct类型的变量
D、T是structS类型的变量
【答案】A
21、若有以下定义:inta[2][3]={2,4,6,8,10,12}则以下描述不正确的是。
A、*(a+l)为元素的指针
B、a[l]+l为元素a[l][1]的指针
C、*(a+l)+2为元素的指针
D、*a[l]+2的值是12
【答案】D
22、若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为一
A、1.9
B、1
C、2
D、2.4
【答案】B
【解析】如第(14)解析所述,C语言对于表达式运算0.9+x/y后的值是L9,
但给整型量z值,则去掉小数为1。
23、设cl,c2均是char类型变量,则不正确的函数调用为。
A、printf(n%c,%c,H,cl,c2)
B、getchar(cl)
C、putchar(*\')
D、putchar(cl)
【答案】B
24、分析下列程序,其最终执行结果是o
main()
(
intn[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]-l;
printf(H%d\nM,n[0]);
A、-2
B、-1
C、0
D、-3
【答案】D
【解析】当i为0,内循环在j为。时,执行n[j]=n[i]T;,即n[0]=n[0]-
1,n[0]值变为T:在j为1时,执行n[j]=n[i]-l;,即n[l]=n[0]-l,将-2
赋给n[l]。当i为1时,内循环在j为0时,执行n[j]=n[i]T;,即
n[0]=n[l]-l,n[O]值变为-3;在j为1时,执行n[j]=n[i]T;,即
n[l]=n[l]-l,将-3赋给n[l];最后n[0]和n[l]的值均为-3。
25、下列语句定义pf为指向float型变量f的指针是正确的.
A、floatf,*pf=f;
B、floatf,*pf=&f;
C、float*pf=&f,f;
I)、floatf,pf
【答案】B
26、设"intx=2,y=l;",则表达式(!x||y一)的值i是。
A、0
B、1
C、2
D、-1
【答案】B
27、以下不能正确定义二维数组的选项是。
A、inta⑵[2]={⑴,⑵};
B、inta[][2]={1,2,3,4};
C、inta[2][2]={{1},2,3};
D、inta[2][>{{1,2},{3,4});
【答案】D
28、c语言中非空的基本数据类型包括.
A,整型,实型,逻辑型
B、整型,实型,字符型
C、整型,字符型,逻辑型
D、整型,实型,逻辑型,字符型
【答案】B
29、下列选项中,能够满足"若字符串si等于字符串s2,则执行st”要求的是。
A、if(strcmp(s2,sl)==0)ST;
B、if(sl==s2)ST;
C、if(strcpy(s1,s2)==1)ST;
I)、if(sl-s2==0)ST;
【答案】A
30、文件中有一个位置指针,指向当前读写的位置,不可使p所指文件的位置返回到文件的
开头的是.
A、rewind(p);
B、fseek(p,O,SEEK_SET);
C、fseek(p,0,0);
D、fseek(p,-3L,SEEK_CUR);
【答案】D
31、函数的形式参数隐含的存储类型说明是。
A、extern
B、static
C、register
D、auto
【答案】D
32、各种运算符间的优先顺序从高到低是o
A、比较运算符一算术运算符一逻辑运算符
B、比较运算符一逻辑运算符一算术运算符
C、算术运算符一比较运算符一逻辑运算符
D、算术运算符一逻辑运算符一比较运算符
【答案】C
【解析】对于多种运算的混合运算,一定要记住它们之间的优先级,否则就会
得到不同的计算结果。
33、请阅读程序:
#include<math.h>
#include<stdio.h>
main()
(
floata,b,c;
scanf(H%f%fr,,&a,&b);
c=a/b;
while(l){
if(fabs(c)>1.6){
a=b;
b=c;
c=a/b;
)
elsebreak;
}
printf(,r%f\nn,b);
}
若运行时从键盘上输入3.62.4V回车,,则输出结果是______。
A、1.500000
B、1.600000
C、2.000000
D、2.400000
【答案】D
【解析】本题考查用break语句终止循环。程序中定义了两个实型变量a、b,
并给scanf()函数赋值,键盘输入3.62.4〈回车>后,a=3.6,b=2.4,
c=a/b=3.6/2.4=1.5,因为c=1.5V1.6,退出循环,输出b的原值。表面上
看,while(l)条件恒为真,将会产生死循环,但利用break语句可以终止循
环。
34、以下关于c语言数据类型使用的叙述中错误的是o
A、若要准确无误差地表示自然数,应使用整数类型
B、若要保存带权多位小数的数据,应使用双精度类型
C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
【答案】D
35、执行以下代码,输出结果是________intx=5,y=7,u=9,v=6;printf(H%dM,x>y?x+2:u
>v?u-3:v+2);
A、8
B、6
C、7
D、true
【答案】B
36、以下叙述中正确的是。
A、N-S流程图只能描述简单的顺序结构的程序
B、程序的算法只能使用流程图来描述
C、结构化程序的三种基本结构是循环结构、选择结构、顺序结构
D、计算机可以直接处理C语言程序,不必进行任何转换
【答案】C
【解析】N-S流程图是可以描述循环结构、选择结构、顺序结构等多种结构的
程序,所以A选项错误。程序的算法可以用流程图、伪代码、N-S结构图等方
法表示所以B选项错误。计算机只能处理二进制表示的目标程序不能直接执行
由C语言编写的源程序所以D选项错误。
37、以下能正确定义数组并正确赋初值的选项是。
A、intN=5,a[N][N];
B、intb[l][2]={{l},{2}};
C、intc[2][]={{1,2},{314});
D、intd[3][2]={{1,2},{3,4});
【答案】D
【解析】A.数组维数必须为常量;数组为一行两列,而两行一列;数
组定义错误,数组定义时列数必须写明,而行数可以缺省;D.表示正确,相当
于{{1,2},{3,4},{0,0})
38、下列程序的执行结果是.
#include<stdio.h>
voidmain()
intx=0,y=l,z=0;
if(x=z=y)x=3;
printfC,%d,%d\nM,x,z);
A、3,0
B、0,0
C、0,1
D、3,1
【答案】D
39、下列关于数组的描述正确的是o
A、数组的长度是固定的,而其中元素的数据类型可以有不同
B、数组的长度是固定的,而其中元素的数据类型必须相同
C、数组的长度是可变的,而其中元素的数据类型可以有不同
D、数组的长度是可变的,而其中元素的数据类型必须相同
【答案】B
40、有以下结构体说明和变量的定义,且指针p指向变量a'指针q指向变量b,则不能把结
点b连接到结点a之后的语句是。
structnode
(
chardata;
structnode*next;
)
a,b,*p=&a,*q=&b;
A、a.next=q;
B、P.next=&b:
C、p—>next=&b;
D、(*p).next=q;
【答案】B
41、将用高级程序语言编写的源程序翻译成目标程序的程序称o
A、连接程序
B、编辑程序
C、编译程序
D、诊断维护程序
【答案】C
【解析】将用高级程序语言编写的源程序翻译成目标程序的程序称编译程序。
连接程序是一个将几个目标模块和库过程连接起来形成单一程序的应用。诊断
程序是检测机器系统资源、定位故障范围的有用工具。
42、以下不能正确计算代数式值的c语言表达式是—
A、l/3*sin(l/2)*sin(l/2)
B、sin(O.5)*sin(0.5)/3
C,pow(sin(0.5),2)/3
D>1/3.O*pow(sin(l.0/2),2)
【答案】A
43、c语言对嵌套的if语句的规定是:else总是与配对。
A、与之前最近的if
B、第一个if
C、缩进位置相同的if
D、与之前最近的且尚未配对的if
【答案】D
44、结构化程序所要求的基本结构不包括()。
A、顺序结构
B、GOTO跳转
C、选择(分支)结构
D、重复(循环)结构
【答案】B
45、下面程序的输出结果是。
#include<stdio.h>intx=l;
voidmain()
(
intx=2;
printf("%d,",x);
if(x==l)
(
intx=4;
printf("%d,",x++);
}
printf("%d",x++);
}
A、2,2
B、1,1,2
C、2,4,3
D、2,3
【答案】A
【解析】虽然全局变量的作用域是整个程序,但如果某个函数或语句块中又声
明了同名的局部变量,则全局变量被屏蔽,在该函数或语句块中所用到的该变
量都是那个同名的局部变量。所以,本题程序第二行定义的全局变量int
x=l;可完全忽略,故程序输出结果为2,2,故应该选择A。
46、以下程序段中,变量c的二进制值是chara=2,b=4,c;
c=a+b<<2;
A、00000011
B、00010100
C、00011100
D、00011000
【答案】D
【解析】请仔细阅读交规难度:简单
47、下列选项中,能正确定义数组的语句是
A、intnum[0..2008];
B、intnum[];
C、intN=2008;intnum[N];
D、^defineN2008;intnum[N];
【答案】D
48、在c语言中,数字029是一个()
A、八进制数
B、十进制数
C、十六进制数
D、非法数
【答案】D
49、下面关于编译预处理命令,正确的是一
A、-definecharCHAR
B、#DefineE0.0000034
C、-defineFALSE0
D、ttdefincDIM26
【答案】D
【解析】无参宏定义的一般格式:#define标识符语言符号字符串,其
中:“define”为宏定义命令;"标识符为所定义的宏名,通常用大写字母表示,
以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串(格式串
是用双引号括起来的字符串)等,选项ABC错误,选项D正确;本题答案为
Do
50、关于建立函数的目的,以下正确的说法是o
A、提高程序的执行效率
B'提高程序的可读性
C、减少程序的篇幅
D、减少程序文件所占内存
【答案】B
桂林电子科技大学
C语言专升本练习(二)
总分:100分考试时间:60分钟
注意事项:
>答题前要仔细阅读答题卡上的“考生须知填好姓名、准考证号填写清楚,字迹不能
超出框线。
>考生必须在答题卡上与题号相对应的答题区域内答题,书写在试卷(题签)、草稿纸上
或答题卡上非题号对应的答题区域的答案一律无效。
>考试中途不能无端离场,否则视为放弃。
一、单项选择题(每小题2分,共100分)
1、在位运算中,操作数每左移一位,其结果相当于
A、操作数乘以2
B、操作数除以2
C、操作数除以4
I)、操作数乘以4
【答案】A
【解析】左移运算符"VV”是双目运算符。其功能把“VV”左边的运算数
的各二进位全部左移若干位,由“VV”右边的数指定移动的位数,高位丢
弃,低位补0。左移1位,相当于该数乘以2。
2、c语言提供的基本数据类型关键字是。
A、integer
B、FLOAT
C、unsigned
D、Double
【答案】c
3、下列说法中不正确的是。
A、switch语句功能可以由if-else语句实现
B、若用于比较的数据类型为double,则不能用switch语句来实现
C>if-else语句的执行效率总是比switch语句高
D、case子句可以有多个语句,并且不需要用大括号””括起来
【答案】C
【解析】并不是所有的if-else语句的执行效率都高于switch语句,在一些特
定的情况下,switch语句可以比较简炼,同时容易阅读,因此,选项C的描
述是错误的。
4、下列叙述中正确的是。
A、break语句只能用于switch语句体中
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体内
D、在循环体内使用break语句和continue语句的作用相同
【答案】C
5、以下程序运行后的输出结果是
main()
(
chars[]=nABCDw,*p;
for(p=s+l;pVs+4;p++)printf("%s\n",p);
)
A、ABCD
BCD
CD
D
B、A
B
C
D
C、B
C
D
D、BCD
CD
I)
【答案】D
【解析】本题考查指向字符串指针的运算方法。执行p=s+l后,指针变量P就
指向字符串中的第二个字符B,然后输出字符串"BCD"并换行;继续执行循环语
句,指针变量p指向下一个字符c,输出字符串"CD",最后一次循环,p指向字
符"D",输出字符串"D"。
6、已知inti,a;
执行语句i=(a=2*3,a*5),a+6;
后,变量i的值是o
A、6
B、12
C、30
D、36
【答案】C
7、对两个数组a和b进行下列初始化:charm□="1234567";char
=,'3','4,'5','6,'7'};则下列叙述正确的是。
A、数组in与数组n完全相同
B、数组m与数组n长度相同
C、数组ni比数组n长1
D、数组m与数组n中都存放字符串
【答案】C
8、为了避免在嵌套的条件语句if-else中产生二义性,c语言规定:else子句总是与配对
________O
A、缩排位貉相同的if
B、其之前最近的没有else配对的if
C、其之后最近的if
D、同一行上的if
【答案】B
9、设char*s=w\ta\017bcM;
则指针变量s指向的字符串所占的字节数是O
A、9
B、5
C、6
D、7
【答案】C
10、设"12,a定义为整型变量。表达式a+==a的值为―
A、12
B、144
C、0
D、132
【答案】C
【解析】表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为
a*a=144,再计算a-=a,a值为a-a=O,再计算计a+二a,故表达式和a的值都为
a+a=Oo
11、设有语句:printf(号2d\n",20I0);
,则以下叙述正确的是O
A、程序运行时输出20
B、程序运行时输出10
C、程序运行时输出2010
I)、指定的输出宽度不够,编译出错
【答案】C
【解析】printf函数格式化字符串的一般形式为:[标志][输出最小宽度][精
度][长度]类型。对于%2d,猊表示结果以十进制形式输出带符号的整数,数字2
表示输出的最小宽度为2,若实际位数多于2,则按实际位数输出,所以程序输出
2010,答案选Co
12、a、b分别是整数6、-2,那么a对b求余与b对a求余的值分别为
A、0、-2
B、3、-2
C、3、2
D、0、2
【答案】A
13、下列选项中,值为1的表达式是o
A、1-'0'
B、1-'\0'
C、'1'-0
D、,\0:0'
【答案】B
【解析】在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要
将字符转换为对应的ASCH码值再参与整数运算。字符对应的ASCH码值是
49,字符'O'对应的ASCII码值是48,字符'\0'是字符串结束标识符NULL,其
对应的ASCII码值是Oo
14、以下不能将s所指字符串正确复制到t所指存储空间的是。
A,while(*t=*s){t++;s++;)
B、for(i=0;t[i]=s[i];i++);
C、do{*t++=*s++;)while(*s);
D、for(i=0,j=o;t[i++]=s[j++];);
【答案】C
15、有以下程序
main()
(
unsignedchara=2,b=4,c=5,d;
d=a|b;
d&二c;
printf(M%d\nM,d);
}
程序运行后的输出结果是o
A、3
B、4
C、5
D、6
【答案】B
16、以下程序的运行结果是.
main()
(
intn;
for(n=l;n<=10;n++)
(
if(n%3=0)continue;
printf("%d",n);
}
}
A、12457810
B、369
C、12
D、1234567890
【答案】A
17、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是
A、函数的实参和其对应的形参共占同一存储单元
B、形参只是形式上的存在,不占用具体存储单元
C、同名的实参和形参占同一存储单元
D、函数的形参和实参分别占用不同的存储单元
【答案】D
18、下列程序的输出结果是
main()
(
doubled=3.2;
intx,y;
x=1.2;
y=(x+3.8)/5.0;
printf(H%d\nn,d*y);
)
A、3
B、3.2
C、0
D、3.07
【答案】c
【解析】考查复合的赋值表达式。[解题要点]本题中,程序先执行语句
x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int
型,即取整为1,然后将1赋值给变量X。接下来执行语句y=(x+3.8)/5.0;根
据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括
号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进
行加法运算,得到中间结果4.8o接着进行除法运算4.8/5.0,其结果小于
1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量
y的类型为整型,于是对这个小于L0的中间结果进行取整,结果为0,于是变
量y的值为0,d*y的值也为0。[考点链接]格式输出语句printf的使用。
19、若有定义:intaa[8];则以下表达式中不能代表数组元aa[l]的地址的是
A、&aa[0]+l
B、&aa[l]
C、&aa[O]++
D、aa+1
【答案】c
20、若有以下说明语句:
structdate
(
intyear;
intmonth;
intday;
}brithday;
则下面的叙述不正确的是.
A、struct是声明结构体类型时用的关键字
B、structdate是用户定义的结构体类型名
C、brithday是用户定义的结构体类型名
D、year,day都是结构体成员名
【答案】C
21、以下叙述中正确的是。
A、a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型
值
B、在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式
C、执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由
原值改变为b的值,b的值由原值变为0
D、已有a=3,b=5,当执行了表达式2巾,b=a之后,使a中的值为5,b中的值为3
【答案】A
22、设有以下程序段:inty;y=rand()%30+l;则变量y的取值范围是。
A、0WyW30
B、0<yW30
C、l<y<30
D、l<yW30
【答案】B
【解析】本题考点为"%求余符号。rand产生随机整数,任何整数对30求余得
到的整数范围为0~29,则y的取值范围为lsy30或者说0VyW30,B选项正
确。
23、下面函数的功能是。a(si,s2)charsi[],s2[];while(s2++=sl++);
A、字符串比较
B、字符串复制
C、字符串链接
D、字符串反向
【答案】B
24、有以下程序
main()
(
intx=O,y=O,i;
for(i=l;++i)
(
if(i%2=0)
(
x++;
continue;
)
if(i%5=0)
(
y++;
break;
)
}
printf('r%d,%dM,x,y);
)
程序的输出结果是o
A、2,1
B、2,2
C、2,5
D、5,2
【答案】A
【解析】本题考查了continue和break语句在循环语句中的作用。break语句
的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下
次循环。
25、以下关于宏的叙述中正确的是。
A、宏名必须用大写字母表示
B、宏定义必须位于源程序中所有语句之前
C、宏替换没有数据类型限制
I)、宏调用比函数调用耗费时间
【答案】C
26、设intk=32767;执行k=k+l;后k值为.
A、32768
B、-32768
C、0
D、-1
【答案】B
27、若有以下说明:charsl[]={"tree"
},s2[]={"flower"};,则以下对数组元素或数组的输出语句中,正确的是
A、printf("%s%s",si[5],s2[7]);
B、printf("%c%c",si,s2);
C、puts(si);puts(s2);
D、puts(si,s2);
【答案】c
28、用高级程序设计语言编写的程序_
A、计算机能直接执行
B、具有良好的可读性和可移植性
C、执行效率高,但可读性差
D、依赖于具体机器,可移植性差
【答案】B
【解析】用高级程序设计语言编写的程序具有良好的可读性和可移植性。
29、下列表达式中,类型可以作为int型的是.
A、"abe"+"efg”
B、"abc"+"efg”
C、'a'+'b'
D、3+"4"
【答案】C
【解析】选项A的运算结果为字符串类型;选项B语法错误;选项D的运算结
果也是字符串;只有选项C可以看做是两个字符的ASCII值相加,结果为int
型。
30、以下叙述中错误的是o
A、C语言中对二进制文件的访问速度比文本文件快
B、C语言中,随机文件以二进制代码形式存储数据
C、语句FILE*fp;定义了一个名为fp的文件指针
D、C语言中的文本文件以ASCII码形式存储数据
【答案】B
31、若有定义语句:char*sl="ok",*s2="ok";以下选项中,能够输出"ok"的语句是一
A、if(strcmp(sl,s2)=0)puts(sl);
B、if(strcmp(sl,s2)!=0)puts(s2);
C、if(strcmp(sl,s2)~l)puts(sl);
D、if(strcmp(sl,s2)==0)puts(si);
【答案】A
【解析】strcmp函数比较字符串大小,区分大小写,所以当si,s2不相等输
出si就会输出“0K”,答案选择A。
32、"对下面程序段:
ttdefineA3
ttdefineB(a)((A+l)*a)...x=3*(A+B(7));正确的判断是。"
A、程序错误,不许嵌套宏定义
B、程序错误,宏定义不许有参数
C、x=93
D、x=21
【答案】C
33、以下叙述中正确的是。
A、在C语言中,常量名也要遵守标识符的命名规则
B、对单目运算符来说,运算对象一定在其右侧
C、标识符的首字符必须是下划线、字母,其他字符可以是任意的键盘可键入字符
D、变量占用内存,常量不占用内存
【答案】A
【解析】C语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效
字符序列统称为标识符,常量名也要遵守标识命名规则,选项A正确;单目运算
符的运算对象可以在其左侧或者右侧,如i++或++i,选项B错误;C语言规定标
识符只能由字母、数字、下划线组成,选项C错误;一般来说,基本类型(整型、
字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存,而字符串常
量或基本类型的常量数组占用的是数据段内存。当然,占代码段的内存一般不在
我们常说的“占内存”范围中,选项D错误;本题答案为A。
34、若有下面的说明和定义,则sizeof(structaa)的值是________。
structaa{
intrl;
doubler2;
floatr3;
unionuu{
charul[5];
longu2[2];
}ua;
}mya;
A、30
B、29
C、24
D、22
【答案】D
【解析】structaa的字节数等于结构体中除共用体的成员所占存储单元之和+
共用体的长度,所以计算结果为2+8+4+8=22。
35、下面程序的输出是
#include<stdio.h>
voidmain()
(
intk=ll;
printf(Hk=%d,k=%o,k=%x\nH,k,k,k);
}
A、k=ll,k=12,k=ll
B、k=ll,k=13,k=13
C、k=ll,k=013,k=0xb
D、k=ll,k=13,k=b
【答案】D
36、若有循环:
intx=5,y=20;
do(y-=x;x++;)
while(++x<-y);
则循环体将被执行o
A、0次
B、1次
C、2次
D、3次
【答案】C
37、设变量定义为"intx,*p=&x;
",则&(*p)相当于
A、p
B、*p
C、x
D、*(&x)
【答案】A
38、有以下程序
#include<stdio.h>
main()
(
intb[3][3]={0,l,2,0,l,2,0,l,2},i,j,t=l;
for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];
printf('r%d\nn,t);
)
程序运行后的输出结果是O
A、1
B、3
C、4
D、9
【答案】C
39、有以下程序
main()
(
inta[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
(
ptr=a+i;
scanf(,,%dn,ptr);
ptr++;
}
for(i=0;i<3;i++)
(
for(j=0;j<2;j++)printf(,,%2d\a[i][j]);
printf(n\nM);
}
)
若运行时输入:123V回车>,则输出结果是o
A、产生错误信息
B、10
C、12
D、10203020000030
【答案】B
【解析】本题定义了一个二维数组a,又定义了一个指针变量ptr,它用于指向
包含2个元素的一维数组,在第一个for循环中,语句"ptr=a+i;"用于将指针
变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第0行
的第1个元素和第1行的第1个元素赋了值1和2o
40、设
structdata
(
inta;
floatb;
}c,*p=&c;
,引用正确的是o
A、*p.a
B、p.b
C、p->a
D、*p->b
【答案】c
41、c语言中运算对象必须是整型的运算符是一
A、%=
B、/
C、=
I)、〈=
【答案】A
42、若有定义语句:inta[4][10],*p,*q[4];且0<=i<4,则错误的赋值是一
A、p=a
B、q[i]=a[i]
C、p=a[i]
D、p=&a[2][l]
【答案】A
43、以下是if语句的基本形式:if(表达式)语句其中"表达式"
A、必须是逻辑表达式
B、必须是关系表达式
C、必须是逻辑表达式或关系表达式
D、可以是任意合法的表达式
【答案】D
44、与下面程序段等价的是。
for(n=100;n<=200;n++)
(
if(n%3==0)continue;
printf("%4d",n);
)
A、for(n=100;(n%3)&&n<=200;n++)printf("%4d",n);
B、for(n=100;(n%3)||n<=200;n++)printf("%4d",n);
C、for(n=100;n<=200;n++)if(唳3!=0)printf("%4d",n);
D、for(n=100;n<=200;n++){
if(n%3)printf("%4d",n);Elsecontinue;Break;}
【答案】C
45、若有说明"charsi[30]="abc",s2[]="defghi",则在使用函数strcat(si,s2)后,结果
是。
A、si的内容更新为abcdefghi
B、si的内容更新为defghi\0
C、si的内容更新为defghiabc\0
D、si的内容更新为abcdefghi\0
【答案】D
46、在16位c编译系统上,若定义longa;则能给a赋40000的正确语句是
A、a=20000+20000;
B、a=4000*10;
C、a=30000+10000;
D、a=4000L*10L;
【答案】D
47、若有定义:int(*p)[4];
则标识符p。
A、是一个指向整型变量的指针
B、是一个指针数组名
C、是一个指针,它指向一个含有四个整型元素的一维数组
D、定义不合法
【答案】C
48、在c语言中,字符型数据在内存中以形式存放。
A、原码
B、BCD码
C、反码
D,ASCII码
【答案】D
49、下列字符串中,不可以用作c标识符的是。
A、y_2006
B、_FEST_I1
C、Return
D、switch
【答案】D
【解析】在C中,变量标识符必须是以大小写字母、下画线开始,由数字或者
字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含
-、+、*、/等运算符号。C++变量区分大小写,所以Retrun不是关键字,而是
一个合法变量;swith为关键字,所以不能定义为标示符。
50、在下列关于c语言的局部变量和全局变量所采取的存储类别的叙述中,错误的一条是
A、对于动态局部变量来说,一旦离开函数,其值就消失
B、对于静态局部变量来说,离开函数,其值仍保留
C、对于寄存器变量来说,一旦离开函数,其值就消失
I)、静态外部变量既可在本文件中引用,又可在其他文件中引用
【答案】B
桂林电子科技大学
C语言专升本练习(三)
总分:100分考试时间:60分钟
注意事项:
>答题前要仔细阅读答题卡上的“考生须知填好姓名、准考证号填写清楚,字迹不能
超出框线。
>考生必须在答题卡上与题号相对应的答题区域内答题,书写在试卷(题签)、草稿纸上
或答题卡上非题号对应的答题区域的答案一律无效。
>考试中途不能无端离场,否则视为放弃。
一、单项选择题(每小题2分,共100分)
1、下列字符序列中,不可用作c语言标识符的是。
A、b70
B、#ab
C、symbol
I)、a_l
【答案】B
2、有如下程序段int*p,a=l,b=2;p=&b;a=*p+a;执行该程序段后,a的值为
A、2
B、3
C、4
D、编译出错
【答案】B
3、c语言中逻辑表达式的值为o
A、0或1
B、非零值或零值
C、true或false
D、'true'或'false'
【答案】A
4、若变量已正确定义,以下while循环正常结束时,累加到pi的最后一项item的值满足
A、item的绝对值小于0.0001
B、item的绝对值大于0.0001
C、item的绝对值大于等于0.0001
D,item的绝对值小于等于0.0001
【答案】A
5、以下叙述中不正确的是。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
【答案】C
6、在下列选项中,不正确的赋值语句是.
A、++t;
B'nl=(n2=(n3=0));
C、k=i=j;
D、a=b+c=l;
【答案】D
7、设有如下定义:char*aa[2]="abcd","abed",则以下说法中正确的是。
A、aa数组中元素的值分别是"abcd","ABCD";
B、aa是指针变量,它指向含有两个数组元素的字符型一维数组
C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D、aa数组的两个元素中各自存放了字符‘a'和'A'的地址
【答案】C
【解析】aa数组被定义为字符型指针数组,有两个元素,分别存放字符串
"abed"和"ABCD"的首地址。
8、以下叙述错误的是________。
A、任何能通过编译和运行的算法都一定能得到所期望的结果
B、一个算法所包含的操作步骤应该是有限的
C、算法中每一条指令必须有确切的含义
D、算法可以用各种描述方法来进行描述
【答案】A
9、有以下程序
#include<stdio.h>
main()
(
chars[]=,r012xy\08s34f4w2n;
inti,n=O;
for(i=0;s[i]!=O;i++)if(s[i]>=rOr&&s[i]<=r9r)n++;
printf(H%d\nw,n);
}
程序运行后的输出结果是o
A、0
B、3
C、7
D、8
【答案】B
【解析】阅读本程序可知,字符串s的前三个字符满足if语句,所以n++,当
遇到'\0'时,for循环终止,所以最后输出n值为3。
10、若有定义语句intb=2;则表达式(b<V2)/(3||b)的值是。
A、4
B、8
C、0
I)、2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济南市人民医院康复指导能力考核
- 南昌市中医院灾难医学救援考核
- 池州市人民医院甲状腺细胞学考核
- 南通市人民医院微创玻璃体手术技术准入考核
- 抚州市中医院脑保护技术专项考核
- 酒馆活动优惠活动方案
- 重庆登山活动方案
- 金融活动开业活动方案
- 院落绿植修剪活动方案
- 重庆品牌文化活动方案
- 饮水机产品培训
- 生产计划变更管理
- 图文广告服务投标方案(技术方案)
- 京东安全工程师笔试题库
- 2024年10月自考00182《公共关系学》真题及答案-
- 电梯施工方案对重反绳轮
- 2025版校园食堂日管控、周排查、月调度记录表
- 《城乡规划管理与法规系列讲座课件-建设项目规划与审批》
- 国际关系分析知到智慧树章节测试课后答案2024年秋西安交通大学
- 2025年中远海运集团招聘笔试参考题库含答案解析
- 《尿微量白蛋白mAbl》课件
评论
0/150
提交评论