2008年高级语言程序设计试卷答案

上传人:宝路 文档编号:23355177 上传时间:2017-11-30 格式:DOC 页数:11 大小:86.56KB
返回 下载 相关 举报
2008年高级语言程序设计试卷答案_第1页
第1页 / 共11页
2008年高级语言程序设计试卷答案_第2页
第2页 / 共11页
2008年高级语言程序设计试卷答案_第3页
第3页 / 共11页
2008年高级语言程序设计试卷答案_第4页
第4页 / 共11页
2008年高级语言程序设计试卷答案_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《2008年高级语言程序设计试卷答案》由会员分享,可在线阅读,更多相关《2008年高级语言程序设计试卷答案(11页珍藏版)》请在金锄头文库上搜索。

1、12008 年(下)高级语言程序设计(-)试卷答案(考试时间 150 分钟注:选择题的正确选择用黑体字表示,而选择题的文字答案在本考卷的最后面。第一部分选择题一单项选择题(本大题共 15 题,每小题 2 分,共 30 分) 。l.在一个 C 语言程序中A主函数只能有一个 B. 主函数可以有多个C非主函数只能有一个 D. 主函数和非主函数都可以有多个注:P157,除了主函数之外,其他函数是不能独立运行的。2.正确定义无符号整型变量 m 的语句是A. int m; B. unsigned int m;C. signed int m; D. unsigned signed m;注:P25,unsig

2、ned int 类型的数值范围:065535( )1-206Int 类型:-32768+327673.不属于字符型常量的是A.”s” B.8C. A D. n注:P22P23,P23 中,每个字符串在内存中占用的字节数等于字符串长度加1,其中最后一个字节存放空字符,用转义字符0表示。单引号是字符标记,双引号是字符串标记,字符串长度要比有效字符个数多 1 个。内存中字符串结尾0 。4.设 int x=2,y=4; 值为非 0 的表达式是A. 1/x*y B. l/(x*y)C. 1.0/x/y D.1/x/(double)y注:P45,整形数相除取整,按照表达式计算时,数据类型转换原则,参加运算

3、的各个数据都转换数据最长的数据类型。只有选择 C,不是整型数,保留小于 1的值。运算符优先级相同,其结合性从左到右。5.设 int a=2,b=5;, 结果为 0 的表达式是A. a%b B. a&bC. a=b D. a!=b注:P38,按位逻辑与,位逻辑运算符&,逻辑与,a=0000 0000 0000 0010,b=0000 0000 0000 0101.a 和 b 两个数的每个对应二进制位上的 0 或 1 逐位进行逻辑与运算。6.设 int a=0;,错误的语句是A. +a; B. a+;C. a=-a; D.(-a)+;2注:P30,增 1,减 1 运算符都是单目运算符,用来对整型,

4、字符型,指针型等变量进行算术运算,不能对表达式进行运算,其运算结果仍然是原来类型,并存回原来存储单元的运算对象。 (-a)不是变量,是表达式,表达式没有存储单元,不能存放增 1,减 1 的运算结果存放回原处,即(-a)处。7.设 int a=1,b=2,c=3,d=4,f;,执行语句 f=(a!=b)?c+:d+;后 f 的值是A. 2 B. 3C. 4 D. 5注:P37,赋值运算符优先级最低,先计算条件运算符 ? :,条件运算符中的关系式 a!=b 为真,执行 c+,然后执行赋值运算符,结果 f=3;8.设 int m =5;,语句 while(m =0 ) printf(”%d”,m -

5、 = 2);的循环体执行的次数是A. 0 B. lC. 2 D. 无限注:P77,while 循环,即当型循环,表达式:m=0 为循环控制条件,表达式的值为真时,反复执行循环体,直到表达式为假时。当控制循环条件不满足时,停止执行循环体,当开始就不满足时,循环体一次也不执行。另一种循环结构:do-while 循环,直到型循环,不管循环控制表达式为何值,循环体总是先执行一次。9.下列运算符优先级最高的是A. + = B. ,C. ! D. ? :注:P33,P36,P37,逻辑运算符,对关系式或逻辑值(真,假)进行运算,运算结果是逻辑值。P34, 逻辑非运算符,! 优先于 双目算术运算符 优先于

6、关系运算符 优先于 & 优先于 |单目运算符!和单目算术运算符的优先级相同,结合性自右向左。10.定义二维数组并初始化,正确的是A. int a3 = 1,2,3,4,5,6; B. int a3 = 1,2,3,4,5,6;C. int a33 = 1,2,3,4,5,6;D. int = 1,2,3,4,5,6;注:看书:P110,P111, (6)若分行给所有行的前若干个元素赋初值,行长度可以忽略。(5)若给所有元素赋初值,行长度可以忽略。要有唯一的解释。1l.有关变量的叙述,正确的是A. 形式参数是全局变量B. a 和 A 在 C 语言中是同一个变量C. 函数体内定义的变量为全局变量D

7、. 在所有函数之外定义的变量为全局变量注:P172,从变量的生存期来区分,生存期覆盖了定义点到整个程序结束的变量3称为全局变量,把生存期只覆盖某个函数或复合语句的变量称为局部变量。用户定义的标识符,即变量名,是区分大小写的。即 int x;和 int X 是两个变量。但是,系统函数名,保留字(例如,int)都是小写字符。l2. 若定义的函数为 float *fun() , 则函数的返回值是A. float 型数据 B. void 型数据C. float 型指针 D. void 型指针注:P178,指针型函数的定义,指针型函数的定义和有返回值函数定义的格式相同,不同的是,在函数名的前面加一个“*

8、” ,表示函数返回值是指针型函数。所谓指针函数,是指返回值是指针型的,这种函数的返回值是地址值,接收返回值的必须是指针变量,指针数组元素等能存放地址值的对象。*是指针运算符。函数的返回值是指针,是指向实型的指针。定义指针变量时也要使用*。没有*返回值是实型,有*是返回指向实型数据的指针。13.设 int al0,*p = a;, 数组元素 a4的正确引用是A. *(p+4) B. p+4C. *p+4 D. a+4注:P140 中,*p 和 a0相同。指针运算符“*”按照地址取存储单元中的值。或,p4;因为,p=a,即,a4*(p+4)与 p4相同。p 的内容是地址,等于 a,*p 内容是 a

9、0的值,等于 a0。14.合法的用户标识符是A. default B. #defineC. a + b D. book注:P8P9,保留字,标识符,保留字是小写字符组成,用户不能使用作为标识符。例如,+,#define,default等。标识符是用户定义,变量名,函数名,数组名。不能使用保留字作为标识符。只有 book 不是保留字,用户可以使用。15. 使用系统函数 sqrt()时,应在程序开头写上的编译预处理命令是A. #include B.#includeC. #include D. #include注:求正平方根函数 double sqrt()在头部文件 math.h 中。文件包含命令,

10、#include第二部分非选择题二、填空题(本大题共 10 小题,每小题 2 分,共 20 分)请在每小题的空格中填上正确答秦。错填、不填均无分。16.赋值运算符的结合性是( 自右向左 ) 。注:P35,算术运算符 优先于 关系运算符 优先于 双目运算符 优先于 赋值运4算符,赋值运算符的结合性自右向左。例 3-24:n1=65;n4=n5=n6=-(-n1)n4=(n5=(n6=-(-n1);n4=-64;17.设 char ch;,判断 ch 为数学字符的逻辑表达式是( ch=0& ch0);的输出结果是( 1 )。注:P36,由逗号运算符组成的表达式:(a/3,a%3,a/100)中的有

11、三个运算,自左向右运算,其值等于右边表达式的值,即关系式 a/100 为真,结果为 1。注意:a 参加三次运算,结果都没有保存回变量 a。21.函数中未指定存储类型的局部变量,其隐含的存储类型是( auto ) 。注:P170,自动型变量是分配在堆栈区。它在某个函数中定义,函数被调用时,在堆栈区为该变量分配内存,当函数调用(复合语句执行)结束时,即从堆栈区中收回分配给该变量的内存单元,以便重新分配给其他自动型变量。这样做的目的是节省内存。22.若全局整型变量未初始化,则默认的初始值是( 0 ) 。注:P172,无存储类型,或静态,static,生命周期从定义点到整个程序结束。23.设 int

12、a,*p = &a;,通过指针变量 p 为 a 输入值的 scanf 语句是(scanf(“%d”,p); ) 。注:P136,代替&a24.设 char *s=”abc”;,语句 for(;*s!=0;s+) printf(”W”);的输出结果是( WWW)。注:s 指向字符串“abc”的内存区域的首地址。用存放字符串的数组 s 控制循环,字符串数组的结束标记是0 。即数组 s 占用 4 个字节。P143P144525.设 struct studentchar name20;char sex.;,stu;语句 printf(”%dn”,sizeof(stu);的输出结果是( 21 )。注:P

13、9,sizeof()计算结构型变量 stu 的字节数,P37,长度运算符,表 3-11,测试数据类型符,或变量占用的字节数,三、程序分析题(本大题共 4 小题,每小题 4 分,共 16 分)阅读下列程序,请将输出结果写到各题右侧的空白处。26.#include void main()int i = 11,j;j = i%3;switch(j) case1:case2: printf(”%dn”,j);break;default: printf(”%dn”,i);注:结果为:2,j = i%3;结果为 j=2; 执行 case 2 语句组,break 语句使得程序跳出 switch结构,不执行

14、default 语句组。27.#include Int fx(int n)int s;if(n = 0) s = 0;else s = n + fx(n-2);return s;void main()printf(”%dn,fx(8);注:结果为:20;函数 fx()的参量是:int n;解析:递归调用顺序:main()发出 fx(8)调用,实参为 8, 给形参赋值 n=8; 在 fx()中,执行 else 语句:s = 8+fx(6), 该语句产生调用 f(6),(赋值 n=6,); 在 fx()中,执行 else语句,6+fx(4),该语句又产生调用 f(4); 赋值 n=4,执行语句 4

15、+fx(2);又产生6调用 f(2); 赋值 n=2,执行:2+ fx(0) ;产生调用 f(0);在 fx()中,执行返回语句,return s; 而 s=0,即 fx(0)调用的结果是 0:即 fx(0)=0。然后执行递归,返回的过程是:由:f(0)=0,得到:fx(2)=2+fx(0)=2;由 f(2)=2,得到:fx(4)=4+fx(2)=6;fx(6)=6+fx(4)=12;fx(8)=8+fx(6)=2028.#include #include void main()char *pa,a20 =”Beijing2008”; /* 其中 a 指向字符串首地址 */for(pa = a

16、+7; *pa!= 0;pa+) putchar(*pa); /* pa 初始时刻指向字符2,循环过程中,每循环一次指针向后移动一个字符,当指向0时,循环结束。每个字符串最后都有一个结束标记0 。*/putchar(n);注:2008解析:初始时刻,因为 a 指向B,所以指针 pa 指向2。29.#include #denne N 6void main()int aN = 2,5,-6,4,-9,l0,i;for(i = 0;i#denne N l00void main()int i, month;int birthl3=0; /*birth1birth12分别保存 l12 月过生日的学生人数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号