春省二级C.docx
- 文档编号:6167648
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:25
- 大小:36.17KB
春省二级C.docx
《春省二级C.docx》由会员分享,可在线阅读,更多相关《春省二级C.docx(25页珍藏版)》请在冰豆网上搜索。
春省二级C
2005年春浙江省高等学府
计算机等级考试试卷(二级VisualC)
试题一、判断题(每题1分,共10分)
说明:
在以下提供的若干个陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。
(1)在C语言中,常量和变量都有数据类型。
标准答案
A
相关知识点
数据类型、常量和变量。
解题思路
C语言中数据按其不同的形式分为基本类型(整型、实型、字符型)、指针型、构造类型(数组、结构体、共用体)、空类型等数据类型。
所以在C程序中数据不论以常量或变量的形式出现,都是有数据类型的。
具体的解题步骤
略
(2)C语言的运算符只有单目运算符和双目运算符两种。
标准答案
B
相关知识点
C语言中的运算符。
解题思路
单目运算符和双目运算符是以参与该运算符运算的操作数的个数来分类的。
C语言中除了这两种运算符以外,还有一种比较特殊的三目运算符——条件运算符。
具体的解题步骤
略
(3)若变量已正确定义,表达式x+y=z符合C语言语法。
标准答案
B
相关知识点
赋值运算符和赋值表达式。
解题思路
C语言赋值表达式的格式:
变量名=表达式
赋值运算符的作用是将赋值运算符右边的表达式的值赋给左边的变量,即赋值运算符左边必须有存储空间,能存放右边表达式的值。
而表达式x+y是没有存储空间的,所以不能出现在赋值运算符的左边。
具体的解题步骤
略
(4)C编译器可以找出C源程序中所有的语法错误和逻辑错误。
标准答案
B
相关知识点
C语言的编译程序及C程序的上机过程。
解题思路
C语言的编译程序(即编译器)是对C源程序进行编译,若没有语法错误,则经连接后生成可执行文件。
对源程序编译的过程,就是进行语法检查的过程。
但编译程序不能检查算法上的错误,即逻辑错误。
对于逻辑错误,只有编程者自己上机对源程序进行调试运行,根据程序的输出结果进行判断。
具体的解题步骤
略
(5)表达式3*5/2和表达式3/2*5等价。
标准答案
B
相关知识点
C语言算术运算符和算术表达式。
解题思路
C语言的算术运算符是左结合性的,即同一优先级运算符的计算从左向右进行。
此外,需要注意的是,对于除法运算符,若两个操作数都是整型数据,则计算结果要取整。
所以,表达式3*5/2结果为7,而表达式3/2*5的结果为5,两者不等价。
具体的解题步骤
略
(6)表达式m=n++的求解顺序是先计算m=n,再计算n=n+1。
标准答案
A
相关知识点
自增(减)运算符及运算符的优先级。
解题思路
C语言中的自增(减)运算符有两种使用格式:
前缀格式和后缀格式。
前缀格式的自增(减)运算,先对变量进行加(减)1,然后取变量的值作为该表达式的值;后缀格式的自增(减)运算,先取变量的值作为该表达式的值,然后对变量进行加(减)1。
自增(减)运算符优先级为2级,赋值运算符优先级为14级,所以本小题中先计算n++,然后将表达式n++的值赋给变量m。
n++是自增运算符的后缀格式,其值即为n的值,因此,先将n赋给m,然后再进行n=n+1。
具体的解题步骤
略
(7)变量名fahr和Fahr代表两个不同的变量。
标准答案
A
相关知识点
C语言的用户自定义标识符。
解题思路
C语言中用户自定义标识符是由字母、数字及下划线组成,且第一个字符必须是字母或下划线,不允许是系统的保留字或关键字。
C语言区分标识符中的大、小字母。
因此fahr和Fahr是两个不同的标识符。
具体的解题步骤
略
(8)若表达式sizeof(unsigned)的值为2,则unsigned类型数据能表示的最大整数为216-1。
标准答案
A
相关知识点
sizeof运算符及基本数据类型中的无符号整型数据。
解题思路
sizeof运算符是计算变量或数据类型所占的内存空间的长度(即字节数)。
若表达式sizeof(unsigned)的值为2,表示无符号整型占2个字节,它所能表示的数值范围从0到216-1。
具体的解题步骤
略
(9)break语句只能用于循环结构中。
标准答案
B
相关知识点
break语句的用法。
解题思路
break语句的两种使用方法:
在多分支结构的switch语句中,跳出该switch语句;在循环语句的循环体中,常与if语句合用,终止循环。
具体的解题步骤
略
(10)while语句先判断循环条件,所以循环体有可能一次也不执行。
标准答案
A
相关知识点
当型循环及while语句。
解题思路
循环有当型循环和直到型循环之分。
当型循环是先进行循环条件的判断,然后执行循环体;直到型循环是先执行循环体,再进行循环条件的判断。
两者的区别在于,当型循环最少一次都不执行循环体,而直到型循环的循环体至少执行1次。
while语句是当型循环,因此循环体可能一次也不执行。
具体的解题步骤
略
试题二、单选题(每小题2分,共20分)
(11)执行scanf(“%d%lf%d”,&money,&rate,&year),输入(11)后,money=1000,year=3,rate=0.025。
A、100030.025B、10000.0253
C、1000,3,0.025D、1000,0.025,3
标准答案
B
相关知识点
C语言中格式输入函数scanf的用法。
解题思路
scanf函数格式:
scanf(格式控制字符串,地址列表);
格式控制字符串由格式说明符(以%开头)和其他字符组成。
输入数据时,从格式控制字符串的首字符开始,遇格式说明符,则以此格式输入数据,存放到地址列表中对应地址的存储单元中;遇到其他字符,则必须原样输入与之抵消。
数值类型数据可用空格、换行符、制表键作为输入项之间的分隔符。
本题中,答案A的第2个输入项3赋给rate,这与题目的要求不符。
答案C和D中各输入项之间用逗号作分隔,但scanf函数的格式控制字符串中没有逗号,所以不匹配,变量rate和year不能正确接收数据。
答案B是正确的。
具体的解题步骤
略
(12)判断变量ch是英文字母的表达式为(12)。
A、(‘a’<=ch<=‘z’)||(‘A’<=ch<=‘Z’)
B、(ch>=‘a’&&ch<=‘z’)&&(ch>=‘A’&&ch<=‘Z’)
C、(ch>=‘a’&&ch<=‘z’)||(ch>=‘A’&&ch<=‘Z’)
D、(‘A’<=ch<=‘z’)&&(‘A’<=ch<=‘z’)
标准答案
C
相关知识点
关系表达式
解题思路
关系表达式的计算结果为逻辑值,成立为1,不成立为0。
特别需要注意的是,数学上成立的式子,在C语言中不一定成立,例如表达式5>3>2,在C语言中其值为0。
遇到这种情况,需要将两个关系运算分开,用逻辑运算符&&进行连接。
答案A和D中,不论ch是何值,表达式均为真,这两个答案肯定是错的。
答案B中,表达式(ch>=‘a’&&ch<=‘z’)判断是否是小写字母,表达式(ch>=‘A’&&ch<=‘Z’)判断是否是大写字母,但两者不能同时成立,即不能是&&与运算,而因该进行或运算,所以B也错了。
只有答案C是正确答案。
具体的解题步骤
略
(13)while((13))等价于while(!
x)。
A、x==1B、x==0
C、x!
=0D、x!
=1
标准答案
B
相关知识点
关系表达式
解题思路
当x为零时,关系表达式!
x为真;当x为非零时,关系表达式!
x为假。
当x为零时,关系表达式x==0为真;当x为非零时,关系表达式x==0为假。
可以看出,关系表达式!
x与x==0是等价的。
同样,表达式x与x!
=0也是等价的。
答案A当x为1时,才为真,其他情况均为假,与表达式!
x不符。
答案C与!
x刚好相反。
答案D当x不等于1时为真,其他情况都为假,也与!
x不符。
只有答案B是对的。
具体的解题步骤
略
(14)以下程序段输出字符串str,其中循环条件str[i]!
=‘\0’还可以写成(14)。
charstr[80];
for(i=0;str[i]!
=‘\0’;i++)
putchar(str[i]);
A、str[i]!
=NULLB、i<80
C、!
(str[i]=‘\0’)D、i<=80
标准答案
A
相关知识点
字符串的处理及字符串的结束标志’\0’
解题思路
C语言中用字符数组来存放字符串,由于数组的大小是固定的,而字符串的长度是可变的,因此为了处理方便,规定用字符’\0’(其ASCII码值为0)作为字符串结束的标志。
这样,在处理字符串时,只要遇到字符串结束标志’\0’即停止,其后的内容不属于字符串,不作处理。
因此答案B、D是错误的。
另外,答案D还有下标越界的危险。
在字符串处理的程序设计中,常用循环for(i=0;str[i]!
=‘\0’;i++)……。
在stdio.h文件中,有宏定义#defineNULL0
因此,也可以用NULL来代替’\0’,答案A是正确的。
答案C中的str[i]=‘\0’,是将‘\0’赋值给str[i],当然是错误的。
具体的解题步骤
略
(15)设变量定义为:
intn,*p;charch,*q,*g;,则语句(15)是不正确的。
A、p=&n;g=q=&ch;B、p=&n;q=&ch;
C、p=&n;g=&ch;D、p=&n;q=&ch;g=p;
标准答案
D
相关知识点
指针变量
解题思路
对于变量,C规定要先定义,后引用。
对于指针变量,另外还有一个规定:
若要通过指针变量来间接引用另一个变量,则必须先使它所指向该变量,即将该变量的地址赋给它。
需要注意的是,变量的数据类型必须与指针变量的基类型一致。
同样,两个指针变量之间进行赋值时,它们的基类型必须相同。
答案A、B、C正确,只有答案D是错误的,因为指针变量p的基类型是整型,指针变量g的基类型是字符型。
具体的解题步骤
略
(16)设变量定义如下,则对其中的结构分量num正确的引用是(16)。
structstudent{
intnum;
charname[20];
floatscore;
}stud[10];
A、stud[1].num=10;B、student.stud.num=10;
C、struct.stud.num=10;D、structstudent.num=10;
标准答案
A
相关知识点
结构体数组的定义及引用、成员运算符
解题思路
对结构体数组元素的成员引用,首先写出数组元素,然后用成员运算符对该元素的某个成员进行引用。
通过成员运算符,可以访问结构体变量、结构体数组元素的各个成员。
对结构体名、结构体数组名不能进行成员运算符的操作。
答案A中对数组元素stud[1]的num成员进行赋值,正确。
答案B、C的D中分别对结构体名、数组名使用成员运算符,都是错误的。
具体的解题步骤
略
(17)对与以下递归函数f,调用函数f(2,‘1’,‘2’,‘3’)的输出结果是(17)。
voidf(intn,chara,charb,charc)
{if(n==1)
printf(“%c->%c#”,a,b);
else{
f(n-1,a,c,b);
printf(“%c->%c#”,a,b);
f(n-1,c,b,a);
}
}
A、1->2#1->3#3->2#B、3->2#1->2#1->3#
C、‘1’-〉‘3’#‘3’-〉‘2’#‘1’->‘2’#D、1->3#1->2#3->2#
标准答案
D
相关知识点
函数的递归调用、字符的输出
解题思路
求解函数的递归调用问题时,先进行一层层的向下递推,直至遇到递归出口(即已知条件),然后再进行一层层的向上回溯。
将字符常量或字符变量输出时,只输出该字符,不输出作为分隔符的单引号。
所以答案C是错误的。
具体的解题步骤
调用函数f(2,‘1’,‘2’,‘3’),此时n=2,a=’1’,b=’2’,c=’3’;n不等于1,于是执行①f(n-1,a,c,b);②printf(“%c->%c#”,a,b);③f(n-1,c,b,a);
①函数调用f(n-1,a,c,b),递推进入下一层,此时n=1,a=’1’,b=’3’,c=’2’;n等于1,执行printf(“%c->%c#”,a,b),输出结果为“1->3#”。
此时已遇到递归出口,回溯到上一层,继续执行②printf(“%c->%c#”,a,b)和③f(n-1,c,b,a)。
②printf(“%c->%c#”,a,b)的输出结果为“1->2#”。
③函数调用f(n-1,c,b,a),递推进入下一层,此时n=1,a=’3’,b=’2’,c=’1’;n等于1,执行printf(“%c->%c#”,a,b),输出结果为“3->2#”。
此时已遇到递归出口,回溯到上一层。
上一层的语句已执行完毕,整个函数运行结束。
(18)下面程序段的输出结果是(18)。
intt,a[3]={10,5,1};
int*p;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级
![提示](https://static.bdocx.com/images/bang_tan.gif)