1、国家二级( C语言)笔试模拟试卷 64及答案与解析 1 计算机系统的组成是 _。 ( A)主机、外设 ( B)运算器、控制器 ( C)硬件系统和软件系统 ( D) CPU、内存储器 2 能直接与 CPU交换信息的功能单元是 _。 ( A)硬盘 ( B)控制器 ( C)主存储器 ( D)运算器 3 计算机软件一般包括应用软件和 _。 ( A)字处理软件 ( B)系统软件 ( C)服务性软件 ( D)操作系统 4 在计算机系统中,一个字长的二进制位数为 _。 ( A) 8 ( B) 16 ( C) 32 ( D)由 CPU型号决定 5 算法是求解问题的方法,具有输入、输出、有穷性、确定性和 _的特
2、性。 ( A)可行性 ( B)计算性 ( C)程序设计性 ( D)检索性 6 设栈 S的初始状态为空,栈的容量为 5,若入栈元素的顺序是 e1、 e2、 e3、 e4、e5,则出栈元素的顺序不可能是 _。 ( A) e1、 e2、 e3、 e4、 e5 ( B) e5、 e4、 e3、 e2、 e1 ( C) e2、 e4、 e3、 e5、 e1 ( D) e3、 e4、 e1、 e2、 e5 7 以下数据结构中不属 于线性数据结构的是 _。 ( A)队列 ( B)线性表 ( C)二叉树 ( D)栈 8 编码是指 _。 ( A)总体设计到详细设计的过程 ( B)用 0、 1代码改写详细设计的结
3、果 ( C)用编程语言改写详细设计的结果 ( D)上述都不对 9 软件生命周期一般包括:软件计划期、开发期和软件运行期。因此,在下述项目中, _不是软件开发期的内容。 ( A)需求分析 ( B)结构设计 ( C)程序编制 ( D)性能优化 10 数据的独立性是指 _。 ( A)数据库的数据相互 独立 ( B) DBMS和 DB相互独立 ( C)用户应用程序与数据库的数据相互独立 ( D)用户应用程序与 DBMS相互独立 11 若 x为 int类型变量,则执行以下程序段后的 x值是 _。 x=6; x+=x-=x*x; ( A) 36 ( B) -60 ( C) 60 ( D) -24 12 设
4、 x, y均是 int类型变量,则以下不正确的函数调用为 _。 ( A) getchar(); ( B) putchar(108); ( C) scanf(“%d%*2d%d“, ( D) putchar(); 13 以下程序的输出结果是 _。 main() char c1=6,c2=0; printf(“%d,%d,%dn“,c1,c2,c1-c2); ( A)因输出格式不合法,输出出错信息 ( B) 54, 48, 6 ( C) 6, 0, 7 ( D) 6, 0, 6 14 以下程序的输出结果是 _。 #include stdio.h main() int a,b,d=241; a=d/
5、100%9; b=(-1) printf(“%d,%d“,a,b); ( A) 6, 1 ( B) 2, 1 ( C) 6, 0 ( D) 2, 0 15 若有以下定义: char a; int b; float c; double d; 则表达式 a*b+d-c值的类型为_。 ( A) float ( B) int ( C) char ( D) double 16 在 C语言中提供的合法的关键词是 _。 ( A) swicth ( B) cher ( C) Case ( D) default 17 下列变量说明语句中,正确的是 _。 ( A) char a=b=c; ( B) char a;
6、b;c; ( C) int x;z; ( D) int x,z; 18 以下程序的输出结果是 _。 int i=010,j=10; printf(“%d,%dn“,+i,j-); ( A) 11, 10 ( B) 9, 10 ( C) 10, 10 ( D) 10, 9 19 标有 /$/的语句的执行次数是 _。 int y,i; for(i=0;i 20;i+) if(i%2=0) continue; y+=i;/$/; ( A) 20 ( B) 19 ( C) 10 ( D) 9 20 以下程序的输出结果是 _。 main() int m=5; if(m+ 5) printf(“%dn“,
7、m); else printf(“%dn“,m-); ( A) 7 ( B) 6 ( C) 5 ( D) 4 21 要正确定义并初 始化一个数组 a,它含有 5个元素,则正确的语句是 _。 ( A) int a5=(0,0,0,0,0); ( B) int a5=; ( C) int a=0,0,0,0,0; ( D) int a=5*0; 22 若二维数组 a有 m列,且设 a00位于数组的第一个位置上,则计算任意元素aij在数组中位置的公式为 _。 ( A) i*m+j ( B) j*m+i ( C) i*m+j-1 ( D) i*m+j+1 23 以下程序的输出结果是 _。 main()
8、 char ch25=“6937“,“8254“,*p2; int i,j,s=0; for(i=0;i 2;i+)pi=chi; for(i=0;i 2;i+) for(j=0;pij 0;j+=2) s=10*s+pij-0; printf(“%dn“,s); ( A) 69825 ( B) 59713 ( C) 6385 ( D) 693825 24 以下程序的输出结果是 _。 main() char*s=“121“; int k=0,a=0,b=0; do k+; if(k%2=0)a=a+sk-0;continue; b=b+sk-0;a=a+sk-0; while(sk+1); p
9、rintf(“k=%d a=%d b=%dn“,k,a,b); ( A) k=3 a=98 b=49 ( B) k=3 a=99 b=50 ( C) k=2 a=99 b=50 ( D) k=2 a=98 b=49 25 执行以下程序后输出的结果是 _。 main() int y=10; do y-;while(-y); printf(“%dn“,y-); ( A) -1 ( B) 1 ( C) 8 ( D) 0 26 以下程序的运行结果是 _。 #include stdio.h main() int a=1,2,3,4,5,6,7,8,9,10,11,12; int*p=a+5,*q=NUL
10、L; *q=*(p+5); printf(“%d%dn“,*p,*q); ( A)运行后报错 ( B) 6 6 ( C) 6 12 ( D) 5 5 27 下面程序的输出结果是 _。 #include stdio.h main() char ch7=“12ab56“; int i,s=0; for(i=0;chi =0i+=2) s=10*s+chi-0; printf(“%dn“,s); ( A) 1 ( B) 1256 ( C) 12ab56 ( D) 1 2 5 6 28 设有以下程序段; int a5=0,*p,*q; p=a;q=a;则合法的运算是 _。 ( A) p+q ( B)
11、p-q ( C) p*q ( D) p%q 29 函数 fun的返回值是 _。 fun(char *a,char*b) int num=0,n=0; while( *(a+num)!=0)num+; while(bn) *(a+num)=bn;num+;n+; return num; ( A)字符串 a的长度 ( B)字符串 b的长度 ( C)字符串 a和 b的长度之差 ( D)字符串 a和 b的长度之和 30 以下程序的输出结果是 _。 main() int x=10,y=10,i; for(i=0;x8;y=+i) printf(“%d %d “,x-,y); ( A) 10192 ( B
12、) 9876 ( C) 10990 ( D) 101091 31 以下正确的数组定义语句是 _。 ( A) int y14=1,2,3,4,5; ( B) float x2=1,2),3; ( C) long s23=1,1,2, 1,2,3; ( D) double t3=0; 32 以下程序运行后,如果从键盘上输入 ABCDEF回车,则输出结果为_。 #include stdio.h #include string.h func(char str) int num=0; while(*(str+num)!=0) num+; return(num);p main() char str10,*
13、p=str; gets(p);printf(“%dn“,func(P); ( A) 8 ( B) 7 ( C) 6 ( D) 5 33 若用数组名作为实参,则传递给形参的是 _。 ( A)数组的首地址 ( B)数组第一个元素的值 ( C)数组中全部元素的值 ( D)数组元素的个数 34 以下程序的输出结果是 _。 main() char a10=1,2,3,4,5,6,7,8,9,*p; int i;i=8;p=a+i; printf(“%sn“,p-2); ( A) 6 ( B) 789 ( C) 6 ( D) 6789 35 若有以下的定义和语句: main() int a43 *p4,j
14、; for(j=0;j 4;j+) pj=aj; 则能表示数组元素的表达式是 _。 ( A) *(p1) ( B) a43 ( C) a1 ( D) *(p+4)1 36 以下程序的输出结果是 _。 main() unsigned short a=65536;int b; printf(“%dn“,b=a); ( A) 0 ( B) 1 ( C) 2 ( D) 3 37 以下程序运行后,输出结果是 _。 fun(int*s,int p23) *s=p11; main() int a23=1,3,5,7,9,11,*p; p=(int *)malloc(sizeof(int); fun( pri
15、ntf(“%dn“,*p); ( A) 1 ( B) 7 ( C) 9 ( D) 11 38 要把数组元素中的最大值放入 a0中,则在 if语句中的条件表达式应该是_。 main() int a10=6,7,2,9,1,10,5,8,4,3,*p=a,i; for(i=0;i10;i+,p+) if(_) *a=*p; printf(“%d“t,*a); ( A) p a ( B) *p a0 ( C) *p *a0 ( D) *p0p*a0 39 有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9的表达式是_。 ( A) *p+9 ( B) *(p
16、+8) ( C) *p+=9 ( D) p+8 40 下列程序的输出结果是 _。 int b=2; int func(int*a) b+=*a;return(b); main() int a=2,res=2; res+=func( printf(“%dn,res); ( A) 4 ( B) 6 ( C) 8 ( D) 10 41 在以下选项中,操作不合法的一组是 _。 ( A) int x6,*p;p= ( B) int x6,*p;*p=x; ( C) int x6,*p;p=x; ( D) int x5,p;p=x0; 42 设 a=5, bc6, c=7, d=8, m=2, n=2,执
17、行 (m=a b) main() int a=25; prty( ( A) 23 ( B) 24 ( C) 25 ( D) 26 44 Turbo C将对以下程序 _。 main() int x,y; y=creat( creat(int a) return a+; ( A)编译时会给出出错信息 ( B)顺利进行编译、连接、执行,不报任何错误 ( C)顺利通过编译、连接,但不能执行 ( D)顺利通过编译,但连接出错 45 以下程序的输出结果是 _。 struct date long *a; struct date*next; double b; too; printf(“%d“,sizeof(
18、too); ( A) 20 ( B) 16 ( C) 14 ( D) 12 46 语句 “printf(“%dn“, 12”的输出结果是 _。 ( A) 12 ( B) 8 ( C) 6 ( D) 12 47 下面程序的运行结果是 _。 main() unsigned a=3,b=10; printf(“%dn“,a 2|b 1); ( A) 3 ( B) 10 ( C) 13 ( D) 14 48 设有以下宏定义: #define N 3 #define Y(n) (N+1)*n)则执行以下语句后, z的值为 _。 z=2*(N+Y(3+2); ( A)出错 ( B) 34 ( C) 46
19、( D) 54 49 若定义了以下函数: void f(.) *p=(double*)malloc(10*sizeof(double); p是该函数的形参,要求通过 p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是 _。 ( A) double *p ( B) float *p ( C) double *p ( D) float *p 50 下面程序的输出结果是 _。 main() enum team my,your=4,his,her=his+10; printf(“%d %d %d %dn“,my,your,his,her); ( A) 0 1 2 3 ( B) 0 4 0
20、 10 ( C) 0 4 5 15 ( D) 1 4 5 15 51 十进制数 111用八位二进制数表示为【 】。 52 对于一棵具有 n个结点的树,该树中所有结点的度为【 】。 53 瀑布模型将软件生存周期划分为【 】、开发和运行 3个阶段。 54 关系可以有 3种类型,即基本关系 (又称基本表或基表 )、查询表和【 】。 55 存储 300个 1616点阵的汉字信息需要【 】字节。 56 语句 X+;、 +X;、 X=X+1;、 X=1+X;,执行后都使变量 X中的值增 1,请写出一条同一功能的赋值语句 (不得与列举的相同 )【 】。 57 设 Y是 int型变量,请写出判断 Y为奇数的关
21、系表达式【 】。 58 下程序的输出是【 】。 main() char str1=“How do you do“,*p1=str1; strcpy(str1+strlen(str1)/2,“es she“); printf(“%sn“,p1); 59 以上程序运行后的输出结果是【 】。 main() int i=10,j=0; do j=j+i; i-; while(i 2); printf(“%dn“,j); 60 设有如下程序: main() int n1,n2; scanf(“%d“, while(n2!=0) n1=n2%10; n2=n2/10; printf(“%d“,n1); 程
22、序运行后,如果从键盘上输入 1298,则输出结果为【 】。 61 以下程序输出的最后一个值是【 】 int ff(int n) static int f=1; f=f*n; return f; main() int i; for(i=1;i =5;i+) printf(“%dn“,ff(i); 62 以下函数的功能是求 x的 y次方,请填空 double fun(double x,int y) int i; double z; for(i=1,z=x;i y;i+)z=z*【 】 ; 63 下列程序的输出结果是【 】。 main() int a=2,4,6,*ptr= for(y=0;y 3;
23、y+) z=(*(ptr+y) x)?*(ptr+y):x; printf(“%dn“,z); 64 以下程序运行后的输出结果是【 】。 main() char s=“9876“,*p; for(p=s;p s+2;p+)printf(“%sn“,p); 65 若有定义语句 char s100,d100;int j=0,i=0;且 s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式 ) while(si)dj=【 】 ;j+; dj=0; 66 若有如下结构体说明: struct STRU int a,b;char c: double d; struct STRU *p1,*p2; ;
24、 请填空,以完成对 t数组的定义, t数组的每个元素为该结构体类型。 【 】 t20 67 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用 ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 FILE *myf; long f1; myf=【 】 (“test.t“,“rb“); fscek(myf,(),SEEK_END);f1+ftell(myf); fclose(myf); printf(“%1dn“,f1); 68 下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注 :程序采用了冒泡排序算法 ) #incl
25、ude stdio.h #include string.h main() char *str=“ABCDabcd“,temp; int n,i; n=strlen(str); while(n- 1) for(i=0;i n;i+) if(stri stri+1) temp=【 】 ; stri=stri+1; 【 】 =temp; printf(【 】 ); 国家二级( C语言)笔试模拟试卷 64答案与解析 1 【正确答案】 C 2 【正确答案】 C 【试题解析】 内存储器又称主存储器,可直接实现与 CPU间的信息交换。 3 【正确答案】 B 4 【正确答案】 D 【试题解析】 字长是指微机能
26、直接处理二进制信息的位数,由 CPU的类型和型号决定。 5 【正确答案】 A 【试题解析】 操作的实现是用算法来描述的。算法就是解决问题的方法,它是由一个若干条指令组 成的有穷序列,必须满足的 5个要素是:有穷性、确定性、输入、输出和可行性。 6 【正确答案】 D 【试题解析】 栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出 ”。本题中,进栈的过程中可以出栈。选项 D中,如果第一个出栈的元素为 e3,由于入栈顺序是 e1、 e2、 e3,那么 e3出栈后,栈中元素必定有 e1和e2,因为 e1先入栈,故 e1应在 e2后出栈,所以选项 D是不可能的出栈顺序。 7 【正确答
27、案】 C 8 【正确答案】 C 【试题解析】 所谓 “编码 ”,是指把软件设计的结果用 计算机系统可以理解的形式表示出来。用于编码的程序设计语言可以是计算机系统能够直接理解的机器语言,也可以是必须通过汇编、编译 (或解释 )才能为计算机系统所理解的汇编语言或高级语言。 9 【正确答案】 D 【试题解析】 瀑布模型把软件生命周期划分为 3个时期,时期又划分为若干阶段: 软件定义期 问题定义和可行性研究; 软件开发期 需求分析、总体设计、详细设计、编码和测试; 运行及维护阶段 维护。所以,性能优化不是软件开发期所应包含的内容。 10 【正确答案】 C 【试题解析】 修改数据库的 物理结构或逻辑结构
28、时,通过两级映像,可以使得应用程序不必修改,保证数据的独立性。数据的独立性包括物理独立性和逻辑独立性。 11 【正确答案】 B 12 【正确答案】 B 【试题解析】 八进制中的基本数为 0 7,不可能出现 8。 13 【正确答案】 B 【试题解析】 本题 printf语句输出字符的 ASC 码值 (整型 )。 14 【正确答案】 B 【试题解析】 在表达式的值作为逻辑值时,非 0值一律为 1, 0值才为 0。 15 【正确答案】 D 16 【正确答案】 D 【试 题解析】 选项 A应为多分支语句中的 switch,选项 B应为定义字符类型的char,选项 C应为多分支语句中的分支关键词 cas
29、e(小写 )。因此,选项 A、 B、 C都有书写上的错误,只有选项 D正确。 17 【正确答案】 D 【试题解析】 同时说明多个变量为同一类型时,变量之间应用逗号分隔。故 D为正确选项。 18 【正确答案】 B 【试题解析】 在 C语言中,以 0开头表示八进制数,所以本题程序中 010表示八进制数 10,相当于十进制数 8。因此 i的初值为 8,经 +i后, i的值为 9。变量 j经 j-后,变为 10,由于自减运算符在 j的右侧,所以是先输出 j的值 10后,再自减 1。 19 【正确答案】 C 【试题解析】 程序中标有 /$/的语句 y+=i在 for循环中,由于该语句前面的条件语句使循环
30、变量 i在对 2求余为 0时就结束本次循环,直接跳过标有 /$/的语句,因此该语句执行了 10次。 20 【正确答案】 B 【试题解析】 注意自增和自减运算符在变量的左右侧的不同用法。本题条件表达式 m+ 5,即 5 5不成立,此时 m=6,执行 else后面的语句,输出 6后再 m-使得 m又等于 5了。 21 【 正确答案】 C 【试题解析】 A项是错误的,赋值时用的是花括号而不是圆括号。 B项错在不能初始化时在花括号内为空。 D项错在不可以用表达式对数组一一赋值。 C项虽然没有直接定义数组的大小,但是初始化时只赋了 5个元素的值,系统会自动定义数组的大小为 5,这种形式是正确的。 22
31、【正确答案】 D 【试题解析】 aij的位置应该是第 i+1行,第 j+1列,那么它的位置是 (i+1-1)*m+j+1=i*m+j+1。 23 【正确答案】 C 【试题解析】 p是指向字符的指针数组。执行第 1个循 环后, p0指向字符数组ch的第 1行 “6937“, p1指向字符数组 ch的第 2行 “8254“,那么 p00其实就对应着 ch00,表示第 1行的第 1个元素 “6”。第 2个循环中,外层 i循环是控制指针数组 p的,内层 j循环则是对每一行内的各个元素进行处理,特别注意循环变量 j的改变 “j+=2“。这样就可以看出是对 ch00、 ch02、 ch10和 ch12进行
32、处理。 24 【正确答案】 C 【试题解析】 第 1次循环中, k=1,不执行 if分支, sk=2,因此 b=2, a=2 因sk+1=1进入第 2次循环, k=2,执行 if分支, sk=1,使 a=3,进而提前结束本次循环, sk+1=0,则退出循环,所以 k=2, a=3, b=2。 25 【正确答案】 D 【试题解析】 执行第 1次循环体, y-使得 y=9,然后 y减 l后判断条件为真,此时 y=8。继续执行 4次循环,直到 y=0时条件为假退出循环,然后输出 y=0后再减1。因此输出的结果为 0。 26 【正确答案】 A 【试题解析】 用指针变量 p+5对指针变量 q进行赋值的正
33、确方法为 p=q+5。 27 【正确答案】 A 【试题解析】 for语句中的条件表达式决定了循环体只执行一次。因此s=0*10+1,于是输出结果为 1。 28 【正确答案】 B 【试题解析】 指向同一字符串的指针可以、也只能进行减运算,返回一个整型数。 29 【正确答案】 C 【试题解析】 本题首先通过第一个 while循环计算字符串 a的长度,再通过第二个 while循环,将字符串 a和 b相连,最后返回连接后的总长度。 30 【正确答案】 D 【试题解析】 第 1次循环, i=0, x=10, y=10,先输出 x=10, y=10,再执行 x-使得 x变为 9,其次再执行 y=+i(i加
34、 1后参与赋值 )使得 y变为 1:第 2次循环,i=1, x=9, y=1,先输出 x=9, y=1,再执行 x-使得 x变为 8,其次再执行 y=+i(i加 1后参与赋值 )使得 y变为 2。 x=8,不满足 x 8,循环结束。 31 【正确答案】 D 【试题解析】 A、 B、 C项均存在行或列上赋初值越界问题,所以都不正确。 32 【正确答案】 C 【试题解析】 本题通过函数 gets()从键盘接收一个字符串,并通过调用 fune()函数,统计串中字符的个数。 33 【正确答案】 A 【试题解析】 用数组名作为实参,调用函数只是把数组的首地址传送给形参指针。 34 【正确答案】 B 【试
35、题解析】 p-2=a+8-2=a+5,则 p指向 a6,则 p指向 7,所以输出如 B所示结果。 35 【正确答案】 A 【试题解析】 B项错在越界,下标最大的元素只到 a32; C项错在 a1只表示第 2行; *(p+4)1的错误也在于越界, p+4相当于 a4,实际上是不存在的。 36 【正确答案】 A 【试题解 析】 65536等于 2的 16次方,而短整型无符号数的取值范围为 065535, 65536已经超出 a的存储范围,将截取溢出了的最高第 17位,低 16位全部为 0,因此把 a赋值给 b,得到的是剩余的 16个 0,所以 b的值为 0。 37 【正确答案】 C 【试题解析】
36、p是指向整型变量的指针,函数 fun的第一个参数是指向指针变量的指针,调用时将 p的地址传给了形参 s,函数体 *s=p11使得 s的内容是p11的地址,即实参 p里存放的是实参数组 a11元素的地址,输出时取指针运算则输出元素 a11=9。 38 【正确答案】 B 【试题解析】 p是指向整型的指针,初始指向数组 a的首地址, a0本来就表示数组 a的第 1个元素,不是表示地址,因此选项 C、 D中的 *a0是错误的。选项A语法上没有错,但是不合乎题意,没有比较数组元素和指针变量 p当前指向单元的内容。 39 【正确答案】 B 【试题解析】 p是指向整型变量的指针,并赋初值指向了数组 a的首地
37、址,*p=1,选项 A中 *p+9=10;选项 C中 *p=*p+9=10。而 p+8是指向数组 a的第 9个元素的地址,只有 *(p+8)才是数 组 a的第 9个元素。 40 【正确答案】 B 【试题解析】 实参 a按地址传递, b是全局变量,函数 func中 b=b+*a=2+2=4,故主函数中 res=res+4=2+4=6。 41 【正确答案】 B 【试题解析】 对于 A和 C都可使 p指向数组 x的首地址。 D是把数组元素 x0赋给 p。 42 【正确答案】 B 【试题解析】 m=a b的值为逻辑值 0, n=c b不被执行, n的值仍为 2。 43 【正确答案】 D 44 【正确答
38、案】 B 【试题解析】 本题传送的实参是变量 x的存储地址,但程序会把它当做实际传递的值来处理,不会报错。 45 【正确答案】 D 【试题解析】 指针类型占 2个字节,双精度型占 8个字节,因此sizeof(too)=2+2+8=12 46 【正确答案】 B 【试题解析】 012是八进制数,转换成十进制为 10, 12 【试题解析】 在 C语言中使变量增 1的方法有:自增运算符与赋值语句。其中自增运算符有前置与后置方式,赋值语句也有两种类型。本题中的主要增 1方式有: X+;、 +X;、 X=X+1;、 X=1+X;、 X+=1;。 57 【正确答案】 Y%2=1 或 Y%2!=0 【试题解析
39、】 判断变量是否为奇数可以用变量与 2取模,判断结果是为 1或不为0。本题具体做法如下: Y%2=1 或 Y%2!=0。 58 【正确答案】 How does she 【试题解析】 strcpy(str1, s1):字符串拷贝函数,作用是将字符串 s1拷贝到字符数组 str1中去。 strlen(str):测试字符串 str的长度,函数的值为字符串中实际长度,不包括 0在内。本题中 strlen(str1)的值为 13,则strcpy(str1+strlen(str1)/2,“es she“);相当于 strcpy(str1+6,“es she“);,因此可得答案为 How does she。
40、 59 【正确答案】 52 【试题解析】 do.while 语句的形式为: do 语句 ; while(条件表达式 ) 当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。 60 【正确答案】 8921 【试题解析】 本题的程序的功能是将输入的整数反向输出。 61 【正确答案】 120 【试题解析】 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具有以下特点: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。 对静态局部变量是在 编译时赋初值的,即只赋初值 次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值
41、而只是保留上次函数调用结束时的值。 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值 0(对数值型变量 )或空字符 (对字符变量 )。 (注意: C语言中的非静态变量在定义时,系统并不会自动给它赋初值 ) 虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。 本题中函数的功能是:与 for语句一起求一个整数的阶乘。 62 【正确答案】 x 【试题解析】 函数的定义形式为: 函 数类型 函数名 (形参表 ) 类型说明语句; 执行语句; 本题中函数的功能是:累积变量以求捐变量的 Y次方。 63 【正确答案】 6 【试题解析】 条件运算符的优先级高于赋值运算符,
42、因此本题先计算关系表达式(*(ptr+y) x)?*(ptr+y):x的值,再赋给变量 z。当 y=0时, *(ptr+y)=2,而 x=8,(*(ptr+y) x)条件为真,则整个条件表达式的值为 *(ptr+y)=2,所以 z=2;当 y=1时, *(ptr+y)=4, (*(ptr+y) x)条件为真,则整个条件表达式的值为 *(ptr+y)=4,所以 z=4;当 y=2时, *(Ptr+y)=6, (*(ptr+y) x)条件为真,则整个条件表达式的值为 *(ptr+y)=6,所以 z=6;循环结束。因此输出 z的结果为 6。 64 【正确答案】 9876 876 【试题解析】 指针是
43、一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义: 类型说明符 *指针变量名; 65 【正确答案】 si+ 【试题解析】 本题中为了能实现字符串的拷贝 ,需要使字符数组 s从头到尾依次遍历其所有元素。本题应使用 i的自增后置来实现。 66 【正确答案】 strudct STRU 【试题解析】 结构件类型是构造数据类型,是用户自己定义的一种类型。 结构体类型的定义: struct 结构体类型名 成员项表; ; 定义结构体变量的的形式为: struct 结构体类型名 变量 1,变量 2,.? 其中变量包括;一般变量、指针变量、数组变量等。 67 【正确答案】 fop
44、en 【试题解析】 C语言中 的文件分为: ASCII文件与二进制 j文件。文件在使用前打开,使用后要关闭。打开文件的函数为: fopen(),调用形式为: fp=fopen(“文件名 “,“使用文件方式 :); 关闭文件的函数为: fclose(),调用形式为: fclose(fp);其中 fp为文件指针。 68 【正确答案】 stri stri+1 “%s“,str 【试题解析】 本题要求将字符串 str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下 个字符,则通过中间变量 temp将字符两两 交换,所以第一空应填: stri,第二空应填: stri+1。最终打印输出得到的字符串 str,所以第三空应填: “%s“,str。