1、国家二级( C语言)笔试模拟试卷 277 及答案与解析 1 软件需求分析一般应确定的是用户对软件的 _。 ( A)功能需求 ( B)非功能需求 ( C)性能需求 ( D)功能需求和非功能需求 2 栈和队列的共同点是 _。 ( A)都是先进后出 ( B)都是先进先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 3 有以下程序: main() char str10=“China“,“Beijing“),*P=str; printf(“%sn“, p+10); 程序运行后的输出结果是 _。 ( A) China ( B) Beijing ( C) ng ( D) ing 4 一个关系中
2、属性个数为 1时,称此关系为 ( )。 ( A)对应关系 ( B)单一关系 ( C)一元关系 ( D)二元关系 5 结构化分析方法是一种面向 _的需求分析方法。 ( A)对象 ( B)数据结构 ( C)控制流 ( D)数据流 6 E-R图是数据库设计的工具之一,它一般适用于建立数据库的 _。 ( A) 概念模型 ( B)结构模型 ( C)物理模型 ( D)逻辑模型 7 软件开发的结构化生命周期方法将软件生命周期划分成 ( A)定义、开发、运行维护 ( B)设计阶段、编程阶段、测试阶段 ( C)总体设计、详细设计、编程调试 ( D)需求分析、功能定义、系统设计 8 数据库管理系统中用来定义模式、
3、内模式和外模式的语言为 ( A) C ( B) Basic ( C) DDL ( D) DML 9 在深度为 5的满二叉树中,结点的个数为 ( A) 32 ( B) 31 ( C) 16 ( D) 15 10 某二叉树 共有 60个叶子结点与 50个度为 1的结点,则该二叉树中的总结点数为 ( )。 ( A) 148 ( B) 169 ( C) 182 ( D) 198 11 在 C语言中,运算对象必须是整型数的运算符是 ( A) % ( B) ( C) %和 ( D) * 12 数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 ( )。 ( A)数据与程序独立存放 ( B)不同的数据
4、被存放在不同的文件中 ( C)不同的数据只能被对应的应用程序所使用 ( D)以上三种说法都不对 13 以下函数不能用于向文件中写 入数据的是 ( A) fwrite ( B) fputc ( C) flell ( D) fprintf 14 结构化程序由三种基本结构组成,三种基本结构组成的算法 ( )。 ( A)可以完成任何复杂的任务 ( B)只能完成部分复杂的任务 ( C)只能完成符合结构化的任务 ( D)只能完成一些简单的任务 15 请读程序: #include stdio. h main() int a; float b, c; scanf (“% 2d% 3%/4f“, printf(
5、“na=%d, b=%f, c=%fn“, a, b, c); 若运行时从键盘上输入9876543210 ,则上面程序的输出结果是 _。 ( A) a=9b=765, c=4321 ( B) a=10,b=432,c=8765 ( C) a=98,b=765.000000,c=4321.000000 ( D) a=98,b=765.0,c=4321.0 16 执行以下语句后的输出结果是 _。 int x=3, y=0; printf(“%d, %d”, -1 x -10 ( B) scanf(“%d,%d,%d“, ( C) scanf(“%d%d%d“, ( D) scanf(“i=%d,j
6、=%d,k=%d“, 21 以下叙述正确的是 ( A) C语言程序是由过程和函数组成的 ( B) C语言函数可以嵌套调用,例如: Fun( Fun( x) ( C) C语言函数不可以单独编译 ( D) C语言中除了 main函数,其他函数不可作为单独文件形式存在 22 以下程序运行后的输出结果是 ( )。 #include stdio.h void reverse(int a,int n) int i, t; for(i=0; i n/2; i+) t=ai; ai=an-1-i; an-1-i=t; main() int b10=10, 9, 8, 7, 6, 5, 4, 3, 2, 1;
7、int i, s=0; reverse(b,10); for(i=0; i 3; i+)s+=bi; printf(“%dn“, s); ( A) 27 ( B) 6 ( C) 25 ( D) 30 23 下列关于 C语言数据文件的叙述中正确的是 ( )。 ( A)文件由 ASCII码字符序列组成, C语言只能读写文本文件 ( B)文件由二进制数据 序列组成, C语言只能读写二进制文件 ( C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 ( D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 24 已知 char*S,下面正确的语句是 ( )。 ( A)
8、s=“ABCDEF“; ( B) *s= “ABCDEF“; ( C) *s=“ABCDEF“; ( D) *s=A; 25 下列程序的运行结果为 #include void abc(char*str) int a,b; for(a=b=0;stra!=0;a+) if(stra!=c) strb+=stra; strb=0; void main() char str=“abcdef“; abc(str); printf(“str=%s“,str); ( A) str=abdef ( B) str=abcdef ( C) str=a ( D) str=ab 26 有以下程序 main() in
9、t x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn“,x,y,z); 程序运行后的输出结果是 ( A) 2,3,3 ( B) 2,3,2 ( C) 2,3,1 ( D) 2,2,1 27 算法具有五个特性,以下选项中不属于算法特性的是 ( )。 ( A)有穷性 ( B)简洁性 ( C)可行性 ( D)确定性 28 数字字符 0的 ASCII值为 48,若有以下程序 : #include stdio.h main( ) char a=1,b =2; printf( “% c,“,b + + ); printf(“ % d n“ ,b - a); 程序运行后
10、的输出结果是 ( )。 ( A) 3,2 ( B) 50,2 ( C) 2,2 ( D) 2,50 29 以下程序的输出结果是 ( )。 #include stdio h void reverse(int a ,int n) int i, t; for(i=0; i n/2; i+) t=ai; ai=an-1 -i; an-1-i =t; main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i 10; i+)s+=bi; printf(“%dn“, s); ( A) 22 ( B)
11、 10 ( C) 34 ( D) 30 30 要求以下程序的功能是计算 main () int n; float s; S=1.0; for (n=10; n 1; n-) s=S+1/n; printf(“%6 4fn“, S); 程序运行后输出结果错误,导致错误结果的程序行是 ( A) s=1.0; ( B) for(n=10; n 1; n-) ( C) s=s+1/n; ( D) prind(“%6.4fn“,s); 31 若有以下定义和语句: int s45, (*ps)5; ps=s; 则对 s数组元素的正确引用形式是 ( A) ps+1 ( B) *(ps+3) ( C) ps0
12、2 ( D) *(ps+1)+3 32 有以下程序: main() char s=“Yesn/No“, *ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是 (选项 D中的第一行是空行 ) ( )。 ( A) n/No Yes /No ( B) /No Yes ( C) /No Yes /No ( D) /No Yes 33 设有以下语句: char str1=“string“,str28,*str3,*str4=“string; 则 _不是对库函数的正确调用。 ( A) strcpy(str1,“HELLO1“); ( B) strcpy(st
13、r2,“HELLO2“); ( C) strcpy(str3,“HELLO3“); ( D) strcpy(str4,“HELLO4“) 34 有以下程序 float fun(int x, int y) return(x+y); main() int a=2,b=5, c=8; printf(“%3.0fn“, fun(int)fun(a+c, b), a-c); 程序运行后的输出结果是 ( A)编译出错 ( B) 9 ( C) 21 ( D) 9 35 有以下程序 void ss(char*s, char t) while(*s) if(*s=t)*s=t-a+A; s+; main() c
14、har strl100=“abcddfefdbd“, c=d; ss(str1, c);printf(“%sn“, strl); 程序运行后的输出结果是 ( A) ABCDDEFEDBD ( B) abcDDfefDbD ( C) abcAAfefAbA ( D) Abcddfefdbd 36 以下程序的输出结果是 ( ) struct HAR int x, y; struct HAR *p; h2; main() h0.x 1; h0.y=2; h1.x 3; h1.y 4; h0.p= 上面程序的输出结果是 _。 ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 38 以下程序的
15、输出结果是 ( ) main( ) int a 5, b 4, c 6, d; printf(”%dn“, d a b?(a c?a: c): (b); ( A) 5 ( B) 4 ( C) 6 ( D)不确定 39 有下列程序: main() char s=“abcde“; s+=2; printf(“%dn“, s0; 执行后的结果是 ( )。 ( A)输出字符 a的 ASCII码 ( B)输出字符 c的 ASCII码 ( C)输出字符 c ( D)程序出错 40 在 C语言程序中,下列说法正确的是 ( )。 ( A)函数的定义和函数的调用均可以嵌套 ( B)函数的定义不可以嵌套,但函数的
16、调用可以嵌套 ( C)函数的定义可以嵌套,但函数的调用不可以嵌套 ( D)函数的定义和函数的调用均不可以嵌套 41 下列合法的字符型常量是 ( )。 ( A) x13 ( B) 081 ( C) 65 ( D) n 41 结构化分析方法是面向 _进行分析的方法。 42 需求分析的最终结果是产生【 】。 43 树中度为零的结点称为 _。 44 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【 】遍历和后序遍历。 45 在面向对象的程序设计中,类描述的是具有相似性质的一组【 】。 46 以下程序输出的最后个值是【 】 int ff(int n) static int
17、 f=1; f=f*n return f; main() int i; for(i=1;i =5:i+) printf(“%d、 n“,ff(i); 47 有以下程序: void f(int*x,iht * y) int t; t=*x;*x;=*y;*y=t; main() int a8=1,2,3,4,5,6,7,8,i,*p,*q; p=a;q= while(p) f(p,q);p+;q-; for(i=0;i 8;i+)printf(“%d,“,ai); 程序运行后的输出结果是【 】。 48 阅读下面程序,则程序的执行结果为 ( )。 #include“stdio.h“ main()
18、int a=10; fun(A); printf(“%dn“, A); fun(int x) x=50; 49 在算法正确的前提下,评价一个算法的两个标准是空间复杂度和 ( )。 50 用以下语句调用库函数 malloc,使字符指针 st指向具有 11个字节的动态存储空间,请填空。 st=(char*)_。 51 有以下程序,其功能是:以二进制 “写 ”方式打开文件 d1.dat,写入 1 100这100个整数后关闭文件。再以二进制 “读 ”方式打开文件 d1.dat,将这 100个整数读入到另一个数组 b中,并打印输出。请填空。 #include stdio.h main() FILE *f
19、p; int i,a100,b100; fp=fopen(“d1.dat“,“wb“); for(i=0;i 100;i+) ai=i+1; fwrite(a,sizeof(int),100,fp); fclose(fp); fp=fopen(“d1.dat“,【 】 ); fread(b,sizeof(int ),100,fp); fclose(fp); for(i=0;i 100;i+) printf(“%dn“,bi); 52 设 x、 y、 z为整型变量,且 x=2, y=3, z=4,当执行以下语句后, x的值是_。 x*=(y+)+(-z); 53 下列程序运行后的输出的结果是 _
20、。 #include stdio.h main() char s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 54 下列程序的运行结果是 _。 main() int a=1,b=10; do b-=a;a+; while(b- 0); print f(“%d,%dn“,a,b); 55 以下程序的功能是输入任意整数给 n后,输出 n行由大写字母 A开始构成的三角形字符阵列图形。例如,输入整数 5时 (注意: n不得大于 10),程序运行结果如下: ABCDE FGHI JKL MN O 请填空完成该程序。 main() int
21、i,j,n; char ch=A; scanf(“%d“, if(n 11) for(i=1;i =n;i+) for(j=1;j =n-i+1;j+) printf(“%2c“,ch); 【 】 ; 【 】 ; else printf(“n is too large!n“) printf(“n“0); 56 下面程序是计算 100以内能被 4整除且个位数为 4的所有整数,请填空。 main() int m, n; for(m 0;【 】; m+) n m*10+4; If(【 】 )continue; printf(“%dn“, n); 国家二级( C语言)笔试模拟试卷 277 答案与解析
22、1 【正确答案】 D 【试题解析】 软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每 功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。 2 【正确答案】 C 【试题解析】 栈和队列都是 种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是栈是 种 “后进先出 ”的线性表;而队列是 种 “先进先出 ”的线性表。 3 【正确答案】 B 【试题解析】 本题中 p+10表 示字符串 “Beijing“的地址,故正确答案为 B。 4 【正确答案】 C 【试题解析】 在关系模型数据库中,我们把构成基本结构的一维表称为关系。关系的列称
23、为属性,具有 N个属性的关系称为 N元关系。 5 【正确答案】 D 6 【正确答案】 A 【试题解析】 E-R模型是描述现实世界的概念模型,它将现实世界的信息结构统一用实体、属性、以及实体之间的联系描述。 E-R图提供了表示实体型、属性和联系的方法。 7 【正确答案】 A 【试题解析】 通常,将软件产品从提出、实现、使用维护到停 止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3个阶段。 8 【正确答案】 C 【试题解析】 选项 A)、 B)显然不合题意。数据定义语言 (Data Definition Language,简称 DDL)负责数据的模式定义与数据的物理
24、存取构建;数据操纵语言 (Data Manipulation Language,简称 DML)负责数据的操纵,包括增、删、改等操作。 9 【正确答案】 B 【试题解析】 二叉树有如下性质:深度为 m的二叉树最多有 2的 m次方再减 1个结点。 10 【正确答案】 B 【试题解析】 叶子结点总是比度为 2的结点多一个。所以,具有 60 个叶子结点的二叉树有 59个度为 2的结点。总结点数 =60个叶子结点 +59个度为 2的结点 +50个度为 1的结点 169个结点 11 【正确答案】 A 【试题解析】 在 C语言中, “%” 运算符两侧的运算数必须是整型。 12 【正确答案】 D 13 【正确
25、答案】 C 【试题解析】 fwrite函数的功能是将一组数据写到磁盘文件上 ;fpute函数的功能是把一个字符写到磁盘文件上 ;fprintf 函数的功能是格式化向磁盘文件写数据 :ftell函数的作用是得到流式文件中的当前位置。 14 【正确答案】 C 【试题解析】 C语言的算法由三种基本结构 (顺序结构、选择结构、循环结构 )组成,用三种基本结构组成的程序是结构化的程序,结构化的程序完成的是符合结构化的任务。 15 【正确答案】 C 【试题解析】 scanf()用户从键盘录入助数字的第 1、 2位存入整型变量 a;把第3、 4、 5位存入单精度实型变量 b,把第 6、 7、 8、 9位存入
26、单精度实型变量 c,用户录入的第 10位被 scanf()遗弃。这 时变量 a、 b、 c的值分别为: 98、765.000000、 4321.000000 16 【正确答案】 B 17 【正确答案】 C 【试题解析】 常量和表达式是不能被赋值的。选项 A为复合表达式,首先计算(i=2, +i)的值,然后赋值给 n,故选项 A正确;选项 B为简单自加运算,因为运算改变了变量 j的内容,所以也算一种赋值语句,故选项 B 正确;选项 c在表达式+(i+1);中, (i+1)不是变量,该表达式的值为常量,而在 +运算中,其运算对象必须为变量,故选项 C错误:选项 D将逻辑表达式 j 0的值赋 给 x
27、,是合法的赋值语句。所以应当选择 C。 18 【正确答案】 D 19 【正确答案】 B 【试题解析】 实型常量有两种书写形式。 小数形式,它由符号、整数部分、小数点及小数部分组成: 指数形式,由十进制小数形式加上指数部分组成,其形式为:十进制小数 e指数或十进制小数 E指数。 注: e或 E后面的指数必须是整数,并且在 e或 E 的前面必须有数字。本题中,选项 A)中 E的前面没有数字,因此错误。选项 C)中 0.8不是整数,因此错误。选项 D)中 4是整型常量而不是实型常量。 20 【正确答案】 B 【试题解析】 函数 scanf()的调用形式是: scanf(格式字符串,输入项地址表 )。
28、其中, “格式字符串 ”是要输入的变量的格式符: “输入项地址表 ”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。 21 【正确答案】 B 22 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。函数 reverse将数组 b 进行了逆置,此时 b10=10,9,8,7,6,5,4,3,2,1),后面 for语句的功能是将 b中的后 3个数累加,并将结果放在 s中,最后将 s输出,结果 s=1+2+3=6。 23 【正确答案】 D 【试题解析】 本题考查数据文件的基本概念。 文件由数据流形式组成,可以按数据的
29、存放形式分为二进制文件和文本文件; C语言既能读写文本文件,又可以读写二进制文件。 24 【正确答案】 C 【试题解析】 “s”是代表数组首地址的地址常量,不是变量, “=”左边不能出现常量,因此 s=“ABCDEF“语法错误。 “*s”和 “s”一样; “*s”是指变量地址,不能给其赋字符串。 25 【正确答案】 A 【试题解析】 本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数 abc()的 for语句执行过程是 :从字符指针 str所指向的字符数组的第一个元素开始 ,逐一判断字符是否为 c,若不是就执行一次数组元素的赋值过程 ,若字符为 c就不执行。 26 【正确答案】 C
30、【试题解析】 整型变量 x、 y的初值都为 是一个逗号表达式 ,程序执行 “z=x+,y+,+y“后 ,x的值为 2,y的值为 3,z取豆号表达式中第二个表达式的值 ,为 1。 27 【正确答案】 B 【试题解析】 有穷性、确定性、有零个或多个输入、有一个或多个输出、可行性是算法的五大特性。选项 B)错误。 28 【正确答案】 C 【试题解析】 变量 a, b 定义为字符型,执行 printf(“%c,“b+);时,首先输出字符变量 b的值 2和逗号,然后 b的值加 1, b 的值变成 3;再执行printf(“%dn“, b-a);输出 3-1,即数字 2。所以程序运行后的输出结果为选项C)
31、。 29 【正确答案】 A 【试题解析】 在 main 函数中,调用 reverse函数将 b数组中的前 8个 成员进行互置,执行完毕后, b数组中的成员为 8, 7, 6, 5, 4, 3, 2, 1, 9, 10,然后再执行 for循环结构,将 b6, b7, , b9的值相加,结果为 22。 30 【正确答案】 C 【试题解析】 程序中由于 n为整型,所以 1/n 的结果始终为 0,故程序最后输出的结果为 0,其结果错误,原因为在表达式 1/n 中 1和 n 均为整型,所以应该将 1改为 1.0,这样表达式 1.0/n 的值不为 0,为该数学表达式的值,因此我们可以知道导致程序运行后输出
32、结果错误的行为 s=s+1/n;,所以, 4个选项中选项 C符 合题意。 31 【正确答案】 C 【试题解析】 本题首先定义了一个 4行 5列的数组 s,又定义了一个指向由 5个元素组成的一维数组的指针变量 ps,通过赋值让 ps指向了数组 s的首地址。此时数组元素 sij的地址为 “*(ps+1)+j”,数组元素 sij可表示为 *(*(ps+1)+j)。选项B 表示的是数组元素 a30的地址;选项 D表示的是数组元素 s13的地址;选项 A中 “ps+1”为指向下一行 (第二行 )的地址;选项 c中 ps02无条件等价于“*(ps0+2)”又无条件等价 于 ”(*(ps+0)+2)”,即是
33、数组元素 s02。所以, 4个选项中 C为所选。 32 【正确答案】 B 【试题解析】 主函数中定义了一个字符数组 s并赋初值,一个字符串指针变量 ps并让它指向 s。程序中 p+4的地址为数组第 5个元素的地址,而调用 put(str adr)函数时,将从 str adr这一地址开始,依次输出存储单元中的字符,遇到第一个“0”时结束输出,并自动输出一个换行符 ad。 r所以 put(p+4)将输出 n/No, put(s)将从 s第一个元素开始输出到第 3个元素结束 (因为执行 *(p+4)=0语句后 s中的第 5个元素的值为 0,而 s中的第 4个元素为 “”, puts将遇到 “0”,结
34、束输出 ),即输出 yes。所以, 4个选项中选项 B符合题意。 33 【正确答案】 C 【试题解析】 C语言中: strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项 C中的目的中指针 str3没有指向具体有效的存储单元,故是错误的调用。 34 【正确答案】 B 【试题解析】 本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如: (double)a是将 a转换成 double类型;(int)(x+y)是将 x+y的值转换成整型。 本题可按部就班地逐步运算: fun(int)fun(a+c, b), a-c) fun(int)fu
35、n(10, 5), 2-8) fun(int)15.000000, -6) fun(15, -6) 9 35 【正确答案】 B 【试题解析】 在内存中,字符数据以 ASCII码存储,它的存储形式就与整数的存储形式相类似。 C语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时 相当于对它们的 ASCII码进行算术运算,在本题中, s+相当于 s=s+1,即让 s指向数组中的下一个元素。 36 【正确答案】 D 37 【正确答案】 A 【试题解析】 strcmp(X1, X2)是串比较函数,本题中 “s1”、 “s2”分别表示这两个串中第一个字符的地址, s1+和 s2+是
36、将指针指向串的第二个字符,则 *s1为“bCdEf”, *s2为 “B”。在字符串比较中,划、的确定是各个字符串相应位置字符的 ASCII码值的大小决定的, s1 s2,返回值为正数。 38 【正确答案】 C 39 【正确答案】 D 【试题解析】 因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句“s+=2; ”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。 40 【正确答案】 B 【试题解析】 本题考查函数调用的基本概念。因为函数的结果是个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但函数的调用可以嵌套。 41 【正确答案】 A 【试题解析】 C语
37、言的字符常量是用单引号 ()括起来的一个字符,也可以用以 个 “”开头的字符序列来表示字符常 量。其中形式 ddd表示 1到 3位 8进制数所代表的字符;形式 xhh 表示 1到 2位 16进制数所代表的字符。在本题中 x13表示回车符,是一个字符常量;而 081用 8进制数所代表的字符形式不正确,因为 8进制数所表示的字符中不会出现数字 “8”; 65单引号 (即撇号 )括起来的不是一个字符,而是一个十进制数字; “n“是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。 41 【试题解析】 矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空
38、心圆的箭头表 示传递的是数据。 42 【正确答案】 需求规格说明书 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果 ,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。 43 【正确答案】 叶子结点 【试题解析】 树中度为零的结点,也就是没有后件的结点,称为叶子结点。 44 【正确答案】 中序 【试题解析】 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历 是先访问根结点,然后遍历左子树,最后遍历右子树,并且在遍历左、右子树时,仍然先访问根结点,然后遍历左
39、子树,最后遍历右于树;中序遍历是先遍历左子树,然后访问根结点,最后遍历右子树;后序遍历是先遍历左子树,然后遍历右子树,最后访问根结点。 45 【正确答案】 对象 【试题解析】 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。 46 【正确答案】 120 【试题解析】 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态变量 的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。 对静态局部变量是在编译时赋初值的,即只
40、赋初值 次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值 0(对数值型变量 )或空字符 (对字符变量 )。 (注意: C语言中非静态变量在定义时,系统并不会自动给它赋初值 ) 虽然静态局 部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与 for语句一起求一个整数的阶乘。 47 【正确答案】 8,7,6,5,4,3,2,1 【试题解析】 函数 f是将 x、 y指针的内容互换,整个 while循环是将 a0与 a7互换, a2与 a5互换, a3与
41、a4互换。 48 【正确答案】 10 49 【正确答案】 时间复杂度 【试题解析】 在算法正确的前提下,评价一个算法的两个标准是空间复杂度和时间复杂度。算法的时间复杂度,是指执行算法所需要的计 算工作量。算法的空间复杂度是指执行这个算法所需要的内存空间。 50 【正确答案】 malloc(11*sizeof(shar)。 【试题解析】 本题考查库函数调用的一些方法,要写 11个字节的动态存储空间的库函数是 malloc(11*sizeof(shar)。 51 【正确答案】 rb或 “r+b“或 “rb+“ 【试题解析】 根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即
42、可。所以,可以填 “rb“或 “r+b“或 “rb+“。 52 【正确答案】 12。 【试题解析】 表达式 x*=(y+)+(-z)相当于先进行 z的自减运算,再执行x=x*(y+z),最后 y自加。因此,变量 x的值为 12, y和 z的值分别是 4和 3。 53 【正确答案】 HOW 【试题解析】 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用 scanf()函数,所以本题中输入空格就返回了 0, s数组也就确定了,后面的输入就不再读入数组 s中。 54 【正确答案】 2,8 【试题解析】 dowhile 语句的功能是:首先执行循环体语句,然后检 测循环
43、控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时 a=1, b=10,经过操作 b-=a; a+后 b=9, a=2,判断条件 b- O不成立,退出循环,但 b 的值被减 1,因此结果为: a=2, b=8。 55 【正确答案】 ch+; 或 +ch; 或 ch=ch+1; 或 ch=1+ch; 或 ch+=1; priintf(“n“); 或 putchar(n); 【试题解析】 因为 ch 被初始化为 A,而内循环中有 条输出 ch的语句,整个程序都没有一条改变 ch 值 的语句。所以,第 1空应该填 ch+或其它类似的表达式,以使每次输出一个字母后 ch 都能变为下一个字母。内循环结束后,代表这一行已经输出完毕,此时即将开始下一行的输出,所以在第 2空位置应该输出一个换行符,故应填入 printf(“n“);或其他等价形式。 56 【正确答案】 m 10 n%4! 0
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1