9512.net
甜梦文库
当前位置:首页 >> IT/计算机 >>

二级C语言模拟试题3


    本文由林宗川贡献     doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机 查看。     一、选择题(1)~(10)每小题 2 分,(11)-(50)每小题 1 分,共 60 分) 下列各 题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题  卡相应位置上,答在试卷上不得分。 (1)在下列选项中,不是一个算法一般应该具有 的基本特征。 A)确定性 答案:C 评析:一个算法,一般应具有以下几个基本特征。 ①可行性②确定性③有穷性④拥有足够的 情报 (2)希尔排序法属于类型的排序法。  A)交换类排序法 C)选择类排序法 答案:B 评析: 希尔排序法的基本思想是: 将整 个无序序列分割成若干小的子序列分别进行插入排序。 所以希尔排序法属于插入类排 序,但它对简单插入排序做了很大的改进。 (3)下列关于队列的叙述中正确的是。 A )在队列中只能插入数据 C)队列是先进先出的线性表 答案:C 评析:队列是指允许在 一端进行插入、而在另一端进行删除的线性表。它又称为"先进先出" 或"后进后出"的 线性表,体现了"先来先服务"的原则。 (4)对长度为 N 的线性表进行顺序查找,在最 坏情况下所需要的比较次数为。 A)N+I 答案:B 评析:在进行顺序查找过程中,如果 被查的元素是线性表中的最后一个,或者被查元素根本 不在线性表中, 则为了查找 这个元素需要与线性表中所有元素进行比较, 这是顺序查找最坏的情 况。 (5)信息 隐蔽的概念与下述概念直接相关。 A)软件结构定义 C)模块类型划分 答案:B 评析: 信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模  块来说是不能访问的。 模块独立性是指每个模块只完成系统要求的独立的子功能,  并且与其他模 块的联系最少且接口简单。 衡量软件的模块独立性的度量标准是耦合 性和内聚性。 一个模块的内 聚性越强,则该模块的模块独立性越强。而内聚性是信 息隐蔽和局部化概念的自然扩长。 (6)面向对象的设计方法与传统的面向过程的方法 有本质不同,它的基本原理是。 A)模拟现实世界中不同事物之间的联系 B)强调模拟 现实世界中的算法而不强调概念 B)模块独立性 D)模拟耦合度 B)N C)(N+I)/2 D)N/ 2 B)在队列中只能删除数据 D)队列是先进后出的线性表 B)插入类排序法 D)建堆排序 法 B)可行性 C)无穷性 D)拥有足够的情报     C)使用现实世界的概念抽象地思考问题从而自然地解决问题 D)鼓励开发者在软 件开发的绝大部分中都用实际领域的概念去思考 答案:C 评析: 面向对象的设计方 法基本原理: 使用现实世界的概念抽象地思考问题从而自然地解决 问题。 强调模拟 现实世界中的概念而不强调算法, 鼓励开发者在软件开发的绝大部分中都用应用 领 域的概念去思考。 (7)在结构化方法中,软件功能分解属于软件开发中的阶段。 A)详 细设计 答案:C 评析:总体设计过程通常由两个主要阶段组成:系统设计,确定系统 的具体实现方案;结构 设计,确定软件结构。为确定软件结构,首先需要从实现角度 把复杂的功能进一步分解。 (8)软件调试的目的是。 A)发现错误 C)改善软件的性能  答案:B 评析:由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错 误的迹象确定程 序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这 个错误。所以程序调试的目 的就是诊断和改正程序中的错误。 (9)按条件 f 对关系  R 进行选择,其关系代数表达式为。 RooR A)RooR 答案:C 评析:选择运算是一个 一元运算,关系 R 通过选择运算(并由该运算给出所选择的逻辑条件) 后仍为一个关 系。 这个关系是由 R 中那些满足逻辑条件的元组所组成。 如果关系的逻辑条件为  C 则 R 满足 f 的选择运算可以写成:6f(R)。 (10)数据库的物理设计是为一个给定 的逻辑结构选取一个适合应用环境的的过程, 包括确定数据库在物理设备上的存储结 构和存取方法。 A)逻辑结构 答案:B 评析: 根据数据库物理设计的概念可知: 为 一个给定的逻辑数据模型选取一个最合适应用要 求的物理结构的过程, 就是数据库 的物理设计。 数据库的物理结构就是指数据库在物理设备上的 存储结构与存取方法 。 (11)下列叙述中正确的是。 A)C 语言编译时不检查语法 B)C 语言的子程序有过程 和函数两种 C)C 语言的函数可以嵌套定义 D)C 语言中,根据函数能否被其它源文件 调用,被区分为内部函数和外部函数 答案:D 评析:选项 A 的错误在于编译过程中 是检查语法的,若发现源程序有语法错误,则系统会 B)物理结构 C)概念结构 D)层次 结构 B) f C)6f(R) D)兀 f(R) B)改正错误 D)挖掘软件的潜能 B)需求分析 C)总体设 计 D)编程调试 page 1

    提示出错信息;选项 B 的错误在于 c 语言中,子程序的作用是由函数来完成的 ,无过程的概念; 选项 c 的错误在于函数不可以嵌套定义,但可以嵌套调用。 (12 )有以下程序: main() { int a: char c=10; float f=100.0;double x; a=f/ =c*=(x=6.5); printf("%d%d%3.1f%3.1f\n",a,c,f,x); } 程序运行后 的输出结果是。 A)1 65 1 6.5 答案:B 评析:本题求解步骤如下:先进行"c*=(x=6 .5)"的运算,由于 x=6.5,表达式相当于 c=c* 6.5=10*6.5=65.再进行"f/=65 "的运算,相当于 f=-f/65=100.0/65,由于 f 为单精度实型 变量,因此 f 的值 约为 1.538462.然后进行"a=f"的运算,由于 a 为整型变量,因此 a=1.最后 将各 个变量的值按照 printf 中的格式要求输出到屏幕,注意变量 f,x 按照"%3.1f"格 式输出,, 即只输出一位小数。 (13)以下变量 x、y、z 均为 double 类型且已正确 赋值,不能正确表示数学式子 x/(y*z)的 C 语言表达式是。 A)x/y*z 答案:A 评析 :按照自左向右的运算逻辑,选项 A 是先做 x/y,然后再乘以 x,显然与题意不符 。 (14)若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是 。 A)-3 答案:C 评析: 语言中对赋值运算的运算顺序是自右向左。 c 本题中, 计 算 a*a 之后, 的值依然为 3, a 表达式 a*a 的值为 9;a-=9,a=3-9=-6;a+=-6, a=-6+-6=-12。 (15)以下程序段中与语句 k=a>b?(b>c?1:0):0;功能等价的是。 A )if((a>b)&&(b>C))k=l;else k=0; B)if((a>b)‖(b>C))k=l;else k=O; C)if(a< =b)k=0;else if(b<=C)k=1; D)if(a>b)k=1,else if(b>C)k=l;else k=0; 答案: A 评析:"a>b?(b>c?1:0):0"的求解顺序是:先判断 a>b 是否为真,如果为真,则 执行 b>c?1: 0:如果 b>c 为真,则(b>c?l:0)的值为 1,从而整个表达式返回 1, 否则整个表达式返回 0;如 果 a<=b,则表达式返回 0。因此功能等价的语句应为 i f((a>b)&&(b>C))k=l;else k=0;。 (16)设 x、y、t 均为 int 型变量,则执行语句 :x=y=3;t=++x‖++y;后,y 的值为。 B)9 C)-12 D)6 B)x*(1/(y*z)) C)x/y*1/ z D)x/y/z B)1 65 1.5 6.5 C)l 65 1.0 6.5 D)2 65 1.5 6.5     A)不定值 答案:C     B)4     C)3     D)1     评析:e 语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一 旦运算到某 式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算 。本题中,++x 的值为 真,则++y 并没有进行运算,所以 y 值不变。 (17)假设 a  和 b 为 int 型变量,则执行以下语句后,b 的值为。 a=l:b=10: do { } b-=a:  a++: C)-l D)8 while(b 一<0): B)-2     A)9     答案:D 评析:本题程序第一轮循环后 b 的值为 9,在进行循环条件测试时, 先取 b 的现值 9 与 O 比 较,然后再将 b 减 l。由于 9<0 不成立,因此循环结束 ,这时 b 的值已变成 8,本题正确答案为 D。 (18)若执行以下程序时从键盘上输入  9,则输出结果是。 main() { int n: scanf("%d:",&n); if(n++<10)printf( "%d\n",n); else printf("%d\n",n--); } A)ll B)lO C)9 D)8 答案:B 评析 :n++是在语句结束后再加 l,因此,if 语句中相当于判断的是 9<10,当然是执行  if 语 句后面的 lorintf 语句,而这时,因为 if 语句被执行,n 的值也被加 1,所 以在打印时,n 值为 10, 而 n--是在 printf 语句执行完毕后再减 1 的。 (19)有 以下程序段 int k=O: while(k=l)k++; while 循环执行的次数是。 A)无限次 C)一 次也不执行 答案:A 评析:c 语言里关系表达式的等于应该是"=="。一个等于号表示 赋值,即这里面重复的把 1 赋给 k,自然表达式 k=l 的值总为 1,while 后面的表 达式恒为真,当然会进入死循环。 (20)有以下程序: void sum(int*a) {a[O]=a[1] ;} B)有语法错,不能执行 D)执行 1 次     main() { Int aa[10]={1,2,3,4,5,6,7,8,9,10},i; for(i=1;i>O;i--)sum (&aa[i]); printf("%d\n",aa[0]); ) 程序运行后的输出结果是。 A)4 B)3 C)2  D)1 答案:D 评析:c 语言规定,实参变量对形参变量的数据传递是"值传递",只由 实参传给形参,而不 能由形参传回来给实参。函数调用结束后,形参单元被释放,实 参单元仍保留并维持原值。本题 要求输出 aa[0]的值,结果应为 1。 (21)以下程序 page 2

执行后 sum 的值是。 main() { int I,sum; for(i=1;i<6;i++)sum+=i; printf ("%d\n",sum); } A)15 答案:C 评析:变量 sum 在使用时未赋初值,所以无法确 定 sum 最终的值。 (22)有以下程序: main() { int x[8]={8,7,6,5,0,0},*s; s =x+3: printf("%d\n",s[2]); } 程序运行后的输出结果是。 A)随机值 答案: B 评析:本题定义了数组 x[8]和指针变量 s,由 c 语言规定,指针加 1 的含义是使 指针指向数 组的下一个元素,而不是指针值简单的加 l,因此通过 s=x+3;使 s 指 向数组元素 x[3]。由于指 向数据的指针变量可以带下标表示,如 s[i]与*(s+i)等价 。因此题目要求输出 s[2]的值,即+(s+2) 的值,也就是 x[51 的值,为 0。 (23)有 以下程序段 int x=3: do { printf("%d",x-=2); B)0 C)5 D)6 B)14 C)不确定  D)0     } while(!(--x)); 其输出结果是。 A)l B)3 0 C)1 -2 D)死循环 答案:C 评 析:本题中循环执行了两次,第一次,执行完 printf 语句后,x=l,而--X 是先自减 后执行 语句,所以(!(--X))的值为非零,所以又执行了一次。第二次 x 的值为-2, --x 的值为-3,求非后, 值为 0,跳出循环。 (24)若变量 c 为 char 类型,能正确 判断出 c 为小写字母的表达式是。 A)'a'<=c<='z' C)('a'<=C)and('z'>=C) 答案: D 评析:(c>='a')和(c<='z')的关系应该是"与"的关系。 (25)下列不合法的 main 函 数命令行参数的表示形式是。 A)main(n a,char*c[]); C)main(C,V)int c,char*v[ ]; 答案:D 评析:main 函数的参数通常有两个,前者为整型,后者为字符型指针数 组。参数的名字可 以是任意合法的标识符。而且,形如**av 与*av[]等价,所以选项  A、B、c 均正确,选项 D 是错 误的。 (26)以下所列的各函数首部中,正确的是。  A)void play(var a:Integer,var b:Integer) B)void play(int a,b) C)void pl ay(int a,int b) D)Sub play(a as integer,b as integer) 答案:C 评析:除选项  c 项外,其它各项都没有按照 c 语言中的函数定义规则定义函数。 (27)在 c 语言 中,引用数组元素时,其数组下标的数据类型允许是。 A)整型常量 C)整型常量或整 型表达式 答案:C 评析:c 语言规定只能逐个引用数组元素而不能一次引用整个数组 ,数据元素的表示形式为 数组名[下标],下标可以是整型常量或整型表达式。 B)整 型表达式 D)任何类型的表达式 B)main(ac,av)int arc;char**av; D)main(argc, argv)int argc;char argv[]; B)(c>='a')‖(c<='z') D)(c>='a')&&(c<='z')     (28)以下选项中,非法的字符常量是 。 A)'\t' 答案:C B)'\17' C)"\n"  D)'\xaa'     评析:C 语言中字符常量是以单引号括起来的单个字符,或为以"\"与三位八进 制数值或两 位十六进制数值代替单个字符。 (29)以下程序的输出结果是 。 #inclu de main() { int a=200; #define a lOO printf("%d",a); #undef a printf ( "%dt",a); } A)200 100 答案:C 评析:#define 宏名的有效范围为定义命令之后 到本源文件结束,可以在程序中使用#undef 命令终止宏定义的作用域。本题由于#un def 的作用,使 a 的作用范围在#define a 100 到#undefa 之间,故答案为 c。 (3 0)若有说明:int i,j=2,*p=&i;,则能完成 i=j 赋值功能的语句是。 A)i=*p;  答案:B 评析:指针是一种用来存放变量地址的特殊变量。本题中指针变量 p 用于存 放整型变量 i 的 地址,改变*p 的值即为改变 i 的值。又因为"&"和"∥两个运算符 的优先级别相同,按自右而左 的方向结合,所以。&j 先进行&j 运算,得 j 的地址 ,再进行+运算,取所得地址里面的值,故 t &j 与 i 等价。 (31)假定 int 类型变 量占用两个字节,若有定义:int 占字节数是。 A)3 答案:D 评析:当数组定义后, 系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数 组 x[10]不论是 否为其元素初始化,它所分配的存储空间仍为 2+10=20 个字节。 (32)执行以下的程 序段后,m 的值是。 int a[2][3]={{l,2,3},{4,5,6}}; int m,*p; p=&a[0] [0]; m=p[41; A)4 答案:B 评析:程序中定义了一个指向整型变量的指针变量,  并对其赋值为二维整型数组 a 的首元素 的地址。P[4]等价于*(p+4),即二维数组 a  中第四个元素的值,而 a 是一个 2*3 的二维数组,其 第四个元素为 a[1][1],即  5。 B)5 C)3 D)不确定 B)6 C)10 D)20 x[10]={0,2,4};,则数组 x 在内存中所 B )*p=*&j; C)i=&j; D)i=**p; B)100 100 C)100 200 D)200 200     (33)以下程序的输出结果是。 main() {int i,a[10]; for(i=9;i>=O;i--)  a[i]=lO-i; printf("%d%d%d",a[2],a[5],a[8]); } A)258 答案:C 评析: page 3

在本题运行时主要注意的是当 i=9 时,a[i]=10-9=1;i=8 时,a[i]=10-8=2;i=7 时 ,a[i] =10-7=3:……依此类推,,直到 i=0 时,a[i]=10-0=10;此时,i 的值已变 为.1,判断 for 的循 环条件,不成立,然后输出 a[2],a[5],a[8]分别为 8,5, 2。 (34)下面程序的输出结果为 #include main() { char pl[7]="abc",p2[]="ABC" ,str[50]= "xyz"; strcpy(str,strcat(pl,p2)); printf("%s",str); } A)xy zabcABC 答案:B 评析:strcpy(strl,s1):作用是将字符串 s1 拷贝到字符数组 s trl 中去。strcat(字符数组 1,字 符数组 2):把。字符串 2 接到字符串 l 的后面 ,结果放在字符数组 1 中,函数调用后返回字符数 组 l 的地址。 本题定义了三个 字符数组 pl,p2,str, strcat(p1,p2)函数的作用是将字符串数组 p2 接到字符串 p  1 的后面,结果放在字符数组 p1,再通过 sffcpy()函数将该字符串拷贝到 str 数 组中,原 str 数组 中的字符串 xyz 被覆盖,因此打印输出字符串 str 即可得到 a bcABC。 (35)以下数组定义中不正确的是。 A)int a[2Ⅱ3]; C)int c[100][100]={ 0}; 答案:D 评析:一维数组的定义方式为: 类型说明符数组名[常量表达式]; 选 项 A 符合此定义形式,正确;c 语言中多维数组赋初值时可以部分赋值,也可以不指 定除 第一维以外的其它维的大小,故选项 c 正确;另外,如果对全部数组元素都赋 初值,则定义数组 时对第一维的长度可以不指定,但第二维的长度不能省,所以选项  B 正确,而选项 D 是错误的。 (36)以下程序的输出结果是。 main() { jnt a[4][ 4]:{{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1 ][2],a[2][1],a[3][0]); B)int b[][3]={0,1,2); D)int d[3][]={{l,2},{l ,2,3},{1,2,3,4}}; B)abcABC C)xyzabc D)xyzABC 。 B)74l C)852 D)369     } A)0650 答案:A 评析:对未给出初始值的整数数组元素,被缺省初始化为零 。 (37)在说明语句:int *f();中,标识符 f 代表的是。 A)一个用于指向整型数据 的指针变量 C)一个用于指向函数的指针变量 答案:D 评析:带回指针值的函数,其 一般定义形式为: 类型标识符 *函数名(参数表); 例如:int *f(x,y); 其中,f  是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y 是函数 f 的形参 。 在 f 的两侧分别为。运算符和()运算符,而()优先级高于 s,因此 f 先与()结合 ,显然是函数形式。 这个函数前面有一个。,表示此函数是指针型函数(函数值是指 针)。前面的 int 表示返回的指针 指向整型变量。 (38)以下程序的输出结果是。 m ain() { } A)99 答案:B 评析:c 语言中字符串是以'\0'字符结束的,且 strlen( )函数计算的是'\0'字符前的所有字符 的个数。本题中 strlen(st)应为 5。数组定 义以后系统就为其分配相应大小的内存空间,而不论其 中有没有内容。sizeof()函数 是计算变量或数组的所分配到的内存空间的大小。所以本题的 sizeof (st)为 20。  (39)下面程序运行后的输出结果是。 int d=1: fun(int p) { static int d=5;d+ =p; printf("%d",d);return d; } main() {int a=3;printf("%d\n",fun(a +fun(d)));} A)6 9 9 答案:C 评析:静态局部变量在编译时赋初值,即只赋初值一 次,在程序运行时它已有初值。以后每 次调用时不再重新赋初值而只是保留上次函数 调用结束时的值, 而对自动变量赋初值, 不是在编 译时进行的, 而在函数调用时 进行, 每调用一次函数重新给一次初值, 相当于执行一次赋值语句。 本题在程序开 头定义了全局变量 d 并赋初值 1, 在被调函数 fun()中, 定义了静态局部变量 d,  初值为 5。在第一次调用函数 fun 时,d 初值为 5,p 由主函数传递过来的值为 1 ,则 d=d+p=5+l B)6 6 9 C)6 15 15 D)6 6 15 B)520 C)1320 D)2020 char st[20]=  "hello\0\t\\"; printf("%d%d\n",strlen(st),sizeof(st)); B)一个用于指向 一维数组的行指针 D)一个返回值为指针型的函数名 B)1470 C)5430 D)输出值不定     =6,由于 d 是静态局部变量,在函数调用结束后,它仍保留 d=6。再次调用 f un 函数,d 的初值 为 6,而由主函数传递的 p 的值为 9,则此时 d=d+p=6+9=15, 最后打印输出 d 的值并返回主函 数。 (40)以下选项中,不能正确赋值的是。 A)ch ar s1[10];sl="chest"; C)char s3[20]= "Chest"; 答案:A 评析:c 语言中不能 将字符串常量直接赋给数组。但在赋初值时可以。 (41)以下程序输出正确的是。 al novep(int *p,int(*a)[3],int n) {int i,j; for(i=0;i<n;i++) for(j=0 ;j< n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5},{2,4,6}} ; p=(int*)malloc(100); amovep(p,a,3); printf("%d%d\n",p[2],p[5]); free(p); } A)56 答案:A 评析:本题 main 函数中定义了指针 p 和二维数组 a, page 4

通过函数 amovep 将数组的值存入指针 p 所指向的存储单元中,a 的各元素分别为: a[0][0]=l,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[l][1] =4,a[1][2]=6,a[2][O] =0,a[2][1]=0,a[2][2]=0a 通过 malloc()函数给指针分配内存空间,free()函数用 于释放指针变量所用内存空间。在主函 数中通过 amovep(p,a,3)调用函数 amovep, 使得实参 p 与形参 p,实参数组 a 与形参中指向数组 的指针变量共用同一存储空间 。最后输出 p[2],p[5]为 56。 (42)下面程序的输出结果是。 #define a 121 cons t b=12: enum c{a1,a2}; main() { printf("%d,%d,%d.",sizeOf(a),si zeOf(b),sizeof(enum C)); } A)121,0,4 答案:B 评析:sizeof 函数是取变量所 占的存储空间的字节数,标识 a 代表常量 121;const b=12;, 其中数据类型可以 缺省,默认为整型;enum c{al,a2};定义了一个枚举类型 enum c,al,a2 为枚 举元 素,在 c 编译时,对枚举元素按常量处理,它们的值按定义顺序依次为 0,1。因此 它们的 B)2,2,2 C)0,2,4 D)0,2,2 B)25 C)34 D)程序错误 B)char s2[]。{'C ','t','e','s','t'); D)char*s4="Ctest\n"'     字节数均为 2,2,2。 (43)以下程序的输出结果是。 struct HAR {int { x,y; struct HAR *p;} h[2]; main() h[0].X=1; h[O].y=2; h[1].x=3;h[1].y=4; h [0].p=&h[1];h[1].p=h; printf("%d%d\n",(h[O].p)->x,(h[1].p)->y); } A )12 答案:D 评析:本题中是一个含有两个结点的循环链表。 c 语言中结构体的定义 为:. struct 结构体类型名 { 成员项表: }; (44)变量 a 所占的内存字节数是  A)4 Union U { char st[4]; Int i: Long l; }; Struct A { int c; Union U  u; }a; 答案:C 评析: 结构体变量所占内存长度是各成员占内存长度之和, 而 共用体变量所占的内存长度等 于最长的成员的长度。本题结构体变量 a 中成员 c 为 整型占 2 个字节,共用体变量 u 最大长度为 4 个字节,故选 C。 (45)以下程序的 结果是。 int a,b; void fun() { a=100;b=200;) main() {int a=5,b=7; fun( ); printf("%d%d\n",a,b); B)5 。 C)6 D)8 B)23 C)14 D)32     } A)100200 答案:B 评析:全程变量是可以在子函数中对其值作改变,且它也 可作为函数间的值传递。但当函数 或子函数中定义了与全程变量名称相同的局部变量 ,则全程变量将被屏蔽。 (46)以下程序的输出结果是。 #define main() { } A)19  答案:D 评析:c 语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带 参数的宏定义, 其形式为:#define 宏名(形参表) 代替。 (47)若有以下说明和语句 : struct st {int n;char *ch;); struct st a[3]={5,"abc",7,"def',9, "ghK"},*p=a;则值为 6 的表达式是。 A)p++ ->n 答案:D 评析:根据结构变量的 存储特点,p+l 意味着增加地址值为结构体数组 a 的一个元素所占的 字节数,'即  p++使 p 由 a[0]指向 a[1]起始地址。本题++p>n 得到 p 指向的结构体变量中成员  n 的 值使之加 l。因为 p 指向数组 a 起始地址,p->n 的值为 5,再执行自加 l 运 行,结果为 6。 (48)整型变量 x 和 Y 的值相等,且为非 O 值,则以下选项中结果 为 0 的表达式是。 A)x||Y 答案:D 评析:"‖"为或运算符,当其左右表达式中只要 一个为非零则整个表达式的值 1。—是按位 或,&是按位与,^是按位异或,这三位运 算符是按值的二进制位来比较的。 (49)C 语言中,组成数据文件的成分是。 A)记录  答案:D 评析:c 语言中的文件是流式文件。流式文件是一种无结构文件,即整个文 件是一串字符流 或二进制流。文件的存取以字符或字节为单位。 (50)下面的程序执 行后,文件 test.t 中内容是。 #include void fun(char *fname,char *st) { FIL E *myf;int i; B)数据行 C)数据块 D)字符(字节)序列 B)X|Y C)X&Y D)X^Y B)p 一 >n++ C)(*p).n++ D)+十 p->n 字符串,本题的 M(a 十 b,b+c,c+a)被字符串 a+b* b+c+c+a B)17 C)15 D)12 int a=l,b=2,c=3; printf("%d\n",M(a+b,b+c,c+ a)); M(x,y,z) x*y+z B)57 C)200100 D)75     myf=fopen(fname, "w"); for(i=0;i<strlen(st);i++)fputc(st[i],myf);  fclose(myf); } main() {fun("test.t","new world");fun("test.t","hello,") ;} A)hello, 答案:A 评析:c 语言中文件有文本文件与二进制文件,对文件的使 用前必须先打开,打开方式有只 读、写入、读写等方式。 二、填空题(每空 2 分, 共 40 分) 填空题 请将每一个空的正确答案写在答题卡的【1】至【20】序号的横线 上,答在试卷上不得分。 (1)实现算法所需的存储单元多少和算法的工作量大小分别 称为算法的 答案:【1】空间复杂度和时间复杂度 评析: 算法的复杂性是指对一个 page 5

在有限步骤内终止算法和所需存储空间大小的估计。 算法所 需存储空间大小是算法 的空间复杂性,算法的计算量是算法的时间复杂性。 (2)数据结构包括数据的逻辑结 构、数据的 答案:【2】存储结构 评析:数据结构包括 3 个方面,即数据的逻辑结 构、数据的存储结构及对数据的操作运算。 (3)一个类可以从直接或间接的祖先中继 承所有属性和方法。采用这个方法提高了软件的 【3】 。 答案:【3】可重用性 评 析:继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中 的冗 余,提高软件的可重用性。 (4)面向对象的模型中,最基本的概念是对象和 答 案:【4】类 评析:面向对象模型中,最基本的概念是对象和类。对象是现实世界中 实体的模型化;将属 性集和方法集相同的所有对象组合在一起,可以构成一个类。  (5)软件维护活动包括以下几类:改正性维护、适应性维护、 答案:【5】完善性 评 析:软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维 护。 完善性维护是指为了满足用户对软件提出的新功能与性能要求, 需要修改或再 开发软件, 以扩充 软件功能、增强软件性能、改进加工效率、提高软件的可维护性 。 (6)语句:X++;、++X;、X=X+1;、X=l+X;,执行后都使变量 X 中的值增 l,请 写出一 条同一功能的赋值语句(不得与列举的相同) 答案:【6】X+=1: 【6】 。 【 5】 维护和预防性维护。 【4】 。 【2】 以及对数据的操作运算。 【1】 。 B)ne w worldhello C)new world D)hello,rid     评析:在 c 语言中使变量增 l 的方法有:自增运算符与赋值语句。其中自增运 算符有前置与 后置方式,赋值语句也有两种类型。 本题中的主要增 l 方式有:x++ ;、++x;、X=X+I;、x=1+x;、x+=l;。 (7)设 Y 是 int 型变量,请写出判断 Y  为奇数的关系表达式 答案:【7】Y%2==1 或 Y%2!=0 【7】     评析:判断变量是否为奇数可以用变量与 2 取模,判断结果是为 1 或不为 0。 本题具体做法 如下:Y%2==1 或 Y%2 1=0。 (8) { char strl[]="How do you do" ,*pl=strl: strcpy(strl+strlen(strl)/2,"es she"); printf("%s\n",p1);  } 答案:【8】How does she 评析:strcpy(strl,s1):字符串拷贝函数,作用是将 字符串 s1 拷贝到字符数组 strl 中去。str len(str):测试字符串 str 的长度,函 数的值为字符串中实际长度,不包括'\O'在内。本题中 strle n(strll 的值为 13, 则 strcpy(strl+strlen(strl)/2,"es she",);相当于 strcpy(strl+6,"es she") ;,因此 可得答案为 How does she。 (9)以上程序运行后的输出结果是 main() {i nt i=10,J=0; do {j=j+i;i--;} while(i>2); printf("%d\n",j); } 答案: 【9】52 评析:do...while 语句的形式为: do { 语句: }while(条件表达式)  当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。 (10)设 有如下程序: main() {int nl,n2; scanf("%df",&n2); while(n2!=0) { nl=n 2%lO; 【9】 。 以下程序的输出是 【8】 。     main()     n2=n2/10: printf("%d",n1); } } 程序运行后,如果从键盘上输入 1298 ,则输出结果为 答案:【10】8921 评析:本题的程序的功能是将输入的整数反向输 出。 (11)以下程序输出的最后一个值 Int ff(int n) {static int f=1: f=f*n:  retun f } main() { int i; for(i=1;i<=5;i++)printf("%d\n",ff(i)); }  答案:【ll】120 评析: 静态变量的类型说明符是 static,静态局部变量属于静态 存储方式,它具有以下特点: ①静态局部变量属于静态存储类别, 在静态存储区内 分配存储单元。 在程序整个运行期间都 不释放。 ②对静态局部变量是在编译时赋初 值的,即只赋初值一次,在程序运行时它已有初值。以后 每次调用函数时不再重新赋 初值而只是保留上次函数调用结束时的值。 ③如在定义局部变量时不赋初值的话,则 对静态局部变量来说,编译时自动赋初值 0(对数 值型变量)或空字符(对字符变量)。 (注意:c 语言中的非静态变量在定义时,系统并不会自动给它 赋初值) ④虽然静态 局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。 本题中函数的功 能是:与 for 语句一起求一个整数的阶乘。 (12)以下函数的功能是:求 x 的 y 次 方,请填空. double fun(double x,int y) {int i; double z; for(i=1,z=x;i <y;i++)z=z* 【12】 return z: ) 答案:【12】x 评析:函数的定义形式为: 函 数类型函数名(形参表) { 类型说明语句; 执行语句: ; 【11】 。 【10】 。     } 本题中函数的功能是:累积变量以求得变量的 Y 次方。 (13)下列程序的输出 page 6

结果是 main() { int a[]={2,4,6},*ptr=&a[0],x=8,y,z; for(y=O;y<3;y+ +) z=(*(ptr+y)<x)?*(ptr 十 y):x; printf("%d\n",z); } 答案:【13】6 评 析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*(ptr+y)<x) ?*(ptr +y):x 的值,再赋给变量 z。当 y=O 时,*(ptr+y)=2,而 x=8,(*ptr+y)< x)条件为真,则整个条 件表达式的值为*(ptr+y)=2,所以 Z=2;当 y=l 时,*(ptr+ y)=4,(*(pty+y)<x)条件为真,则整个条 件表达式的值为*(ptr+y)=4,所以 z=4;当  y=2 时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条 件表达式的值为*(ptr+y) =6,所以 z=6;循环结束。因此输出 z 的结果为 6。 (14)以下程序运行后的输出结 果是 main() { char s[]="9876",*p; for(p=s;p #include main() { char *str ="ABCDabcd",temp; Int n,i; n=strlen(str); while(n-->1) for(i=0;i<n;i ++) if(str[i]<str[i+1]) { temp= 【17】 str[i]=str[i+1]; _【18】 } Printf( _【19】 } 答案:【17】str[i] 【18】str[i+1] 【19】"%s",str 评析:本题要求 将字符串 str 中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻 两个字 符进行比较,如果当前字符小于下一个字符,则通过中间变量 temp 将字符两两交换 ,所 以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串  str,所以第三空应填; "%s",str。 (18)以下程序段打开文件后,先利用 fseek 函 数将文件位置指针定位在文件末尾,然后调 用 ftell 函数返回当前文件位置指针的 具体位置,从而确定文件长度,请填空。 FILE *myf;long myf=_【20】 fclose(my f); printf("%l d\n",f1); 答案:【20】fopen fl; ("test.t","rb"); );  =temp; ;     fseek(myf,(),SEEK_END);fl+ftell(myf);     评析:C 语言中的文件分为:ASCII 文件与二进制文件。文件在使用前打开,使 用后要关闭。 打开文件的函数为:fopen(),调用形式为:fp=fopen("文件名","使 用文件方式"); 关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中 fp  为文件指针。 1

page 7


赞助商链接

更多相关文章:
2016年3月全国计算机等级考试二级C语言上机考试题及答案
2016年3月全国计算机等级考试二级C语言上机考试题及答案_IT认证_资格考试/认证_教育专区。2016年3月全国计算机等级考试二级C语言上机考试题及答案 ...
2016年计算机二级C语言模拟试题及答案
2016年计算机二级C语言模拟试题及答案_资格考试/认证_教育专区。2016 年计算机二级 C 语言模拟试题及答案 2016 年 3 月 26-29 日将举行全国计算机等级考试, 在...
计算机等考二级C语言模拟试题及答案3
计算机等考二级C语言模拟试题及答案3_其它考试_资格考试/认证_教育专区。计算机等考二级C语言模拟试题及答案3一.单项选择题 1. 设 int x=1,y=1;表达式(!x+...
2013年3月计算机等考二级C语言模拟试题及答案3
2013年3月计算机等考二级C语言模拟试题及答案3_工学_高等教育_教育专区。2013 年 3 月计算机等考二级 C 语言模拟试题及答案 3 一、选择题 1.一个 C 语言...
《国家计算机二级c语言历年真题及答案
《国家计算机二级c语言历年真题及答案》_IT认证_资格考试/认证_教育专区。2009 ...2009 年 9 月全国计算机等级考试二级笔试试卷 C 语言程序设计 (考试时间 90 ...
2016年3月份全国计算机等级考试二级C语言_题库(全)
2016 年 3 月份全国计算机等级考试二级 C 语言 题库 2016 年 3 月份全国计算机等级考试二级 C 语言 题库(全)一、选择题 在下列各题的 A) 、B) 、C) 、...
2016年计算机二级c语言题及答案;
2016年计算机二级c语言题及答案;_IT认证_资格考试/认证_教育专区。2016 年计算机二级 c 语言题及答案一 、选择题 ( 每小题 1 分,共 40 小题,共 40 ...
2011年全国计算机等级二级C语言模拟试题及答案(3)
2011年全国计算机等级二级C语言模拟试题及答案2011年全国计算机等级二级C语言模拟试题及答案隐藏>> 一.单项选择题 1. int x=1,y=1;表达式 设(!x++ || y--...
2012年3月计算机等考二级C语言模拟试题及答案2
2012年3月计算机等考二级C语言模拟试题及答案2 隐藏>> 一、填空题 1、C 语言中普通整型变量的类型说明符为___,在内存中占___字节,有符号普通 整型的数据范围...
计算机等考二级C语言模拟试题(3)
计算机等考二级C语言模拟试题(3)_IT认证_资格考试/认证_教育专区。2013 年计算机等考二级 C 语言模拟试题及答案一、选择题 1、设整型变量 a 为 5,使 b 不...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图