1、二级 C语言笔试 314及答案解析(总分:66.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(分数:1.00)A.函数的实参和其对应的形参共占同一存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参和实参分别占用不同的存储单元2.线性表的顺序存储结构和线性表的链式存储结构分别是(分数:1.00)A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任
2、意存取的存储结构3.若变量已正确定义并赋值,以下符合 C语言语法的表达式是(分数:1.00)A.a:=b+1B.a=b=c+2C.int 18.5%3D.a=a+7=c+b4.软件是指(分数:1.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合5.下列程序是用来判断数组中特定元素的位置所在的。 #includeconic.h #includestdio.h int fun(int *s,int t,int *k) int i; *k=0; for(i=0;it;i+) if(s*ksi)*k=i; returns*k; main() int a10=876,67
3、5,896,101,301,401,980,431,451,777,k; fun(a,10, printf(“%d/n“,m); 程序的运行结果是(分数:1.00)A.0B.1C.2D.314.在 16位 IBM-PC机上使用 C语言,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b占用内存的字节数是(分数:1.00)A.1B.2C.7D.1115.下列程序的运行结果为 #includestdioh void abc(char * str) int a,b; for(a=b=0;stra!=/0;a+) if(stra!=c) st
4、rb+=stra; strb=/0; void main() char str=“abcdef“; abc(str); printf(“str=%s“,str);(分数:1.00)A.str=abdefB.str=abcdefC.str=aD.str=ab16.有以下程序 #include stdioh main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+) csi+; for(i=l;i5;i+) printf(“%d“,ci); printf(“/n“); 程序的运行结果是(分数:1.00)A.1 2 3 4B.2 3
5、44C.4 3 3 2D.1 1 2 317.下面程序的输出结果是 #includestdio.h main() int a=1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(“%d/n“,*p+9);(分数:1.00)A.0B.1C.10D.918.下列叙述中正确的是(分数:1.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对19.下面说明不正确的是(分数:1.00)A.char a10=“china“;B.char a10,*p=a;p=“china“C.char*a
6、;a=“china“;D.char a10,*P;p=a=“china“20.数据处理的最小单位是(分数:1.00)A.数据B.数据元素C.数据项D.数据结构21.若程序执行时的输入数据是“2473”,则下述程序的输出结果是 #includestdio.h void main() int cs; while(cs=getchar()!=;/n) switch(cs-2) case 0 case 1:putchar(cs+4); case 2:putchar(cs+4); break; case 3:putchar(cs+3);default:putchar(cs+2),(分数:1.00)A.6
7、68977B.668966C.6677877D.668876622.下面程序的输出结果是 #includestdioh #includestringh main() char*p1=“abc“,*p2=“ABC“,str50=“xyz“; strcpy(str+2,streat(p1,p2); printf(“%s/n“,str);(分数:1.00)A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC23.以下不属于对象的基本特点的是(分数:1.00)A.分类性B.多态性C.继承性D.封装性24.阅读下列程序,则运行结果为 #include “stdio.h“ fu
8、n() staic int x=5; x+; return x; main() int i,x; for(i=0;i3;i+) x=fun(); printf(“%d/n“,x);(分数:1.00)A.5B.6C.7D.825.有以下程序 #include stdioh main() FILE *fp; int a10=1,2,3,i,n; fp=fopen(“d1dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d“,
9、 printf(“%d/n“,m); 程序的运行结果是(分数:1.00)A.0B.1 C.2D.3解析:解析 本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为“ji”,而 j的初值为 3,故当 i的值为 1和 2时,内层循环体都不会被执行。只有当 i和 j都等于3时才会执行一次。m 的值为 55对 3取模,计算结果为 1。14.在 16位 IBM-PC机上使用 C语言,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b占用内存的字节数是(分数:1.00)A.1B.2C.7D.11 解析:解析 结构体变量所占用内存
10、的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2字节,字符型变量 ch所占用的内存是 1字节,双精度型变量 f所占用的内存是 8字节,三者相加即可。15.下列程序的运行结果为 #includestdioh 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);(分数:1.00)A.str=abdef B.str=abcdefC
11、.str=aD.str=ab解析:解析 本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数 abc()的 for语句执行过程是:从字符指针 str所指向的字符数组的第一个元素开始,逐一判断字符是否为“c”,若不是就执行一次数组元素的赋值过程,若字符为“c”就不执行。16.有以下程序 #include stdioh main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+) csi+; for(i=l;i5;i+) printf(“%d“,ci); printf(“/n“); 程序的运行结果是(分数:1.00)A.1 2
12、 3 4B.2 3 44C.4 3 3 2 D.1 1 2 3解析:解析 在 for(i0;i12;i+)csi+中,数组元素 si的值作为数组 c的下标,当退出循环时,数组 c的 4个元素的值分别为 4、3、3、2。17.下面程序的输出结果是 #includestdio.h main() int a=1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(“%d/n“,*p+9);(分数:1.00)A.0B.1C.10 D.9解析:解析 此题考查了指针引用一维数组元素的方法。*p+9 因为运算符“*”的优先级高于“+”,所以输出结果为 p指向的元素 1,然后加 9,值为 10
13、。18.下列叙述中正确的是(分数:1.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。19.下面说明不正确的是(分数:1.00)A.char a10=“china“;B.char a10,*p=a;p=“china“C.char*a;a=“china“;D.char a10,*P;p=a=“china“ 解析:解析 C 语言中操作
14、一个字符串常量的方法有:将字符串常量存放在一个字符数组之中;用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。 本题 D) 项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。20.数据处理的最小单位是(分数:1.00)A.数据B.数据元素C.数据项 D.数据结构解析:解析 数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。21.若程序执行时的输入数据是“2473”,则下述程序的
15、输出结果是 #includestdio.h void main() int cs; while(cs=getchar()!=;/n) switch(cs-2) case 0 case 1:putchar(cs+4); case 2:putchar(cs+4); break; case 3:putchar(cs+3);default:putchar(cs+2),(分数:1.00)A.668977 B.668966C.6677877D.6688766解析:解析 本题主要考查 switch语句的使用方法。switch 语句的执行过程为:进入 switch结构后,对条件表达式进行运算,然后从上至下去找
16、与条件表达式值相匹配的 case,以此作为入口,执行 switch结构中后面的各语句,直到遇到 break语句,则跳出 switch语句,如果各 case都不匹配时,则执行default后面的语句。22.下面程序的输出结果是 #includestdioh #includestringh main() char*p1=“abc“,*p2=“ABC“,str50=“xyz“; strcpy(str+2,streat(p1,p2); printf(“%s/n“,str);(分数:1.00)A.xyzabcABCB.zabcABCC.xyabcABC D.yzabcABC解析:解析 本题考查的重点是拷
17、贝字符串使用 strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串),其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有的内容被覆盖。 使用该函数时注意:字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志“/0”一起复制;不能用赋值运算符“”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数处理。 另外,本题还考查连接字符串的 strcat()函数,其调用方式是:strcat(字符数组,字符串)。 功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中
18、。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。 使用该函数时注意:由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;连接前两个字符串都有结束标志“/0”,连接后“字符数组”中存储的字符串的结束标志“/0”被舍弃,只在目标串的最后保留一个“/0”。23.以下不属于对象的基本特点的是(分数:1.00)A.分类性B.多态性C.继承性 D.封装性解析:解析 对象的基本特点:标志唯一性、分类性、多态性、封装性和模块独立性。24.阅读下列程序,则运行结果为 #include “stdio.h“
19、 fun() staic int x=5; x+; return x; main() int i,x; for(i=0;i3;i+) x=fun(); printf(“%d/n“,x);(分数:1.00)A.5B.6C.7D.8 解析:解析 在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数 fun(),三次对静态变量 x进行操作,x 的值应依次为 6,7,8。25.有以下程序 #include stdioh
20、 main() FILE *fp; int a10=1,2,3,i,n; fp=fopen(“d1dat“,“w“); for(i=0;i3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“/n“); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d“,&n); fclose(fp); printf(“%d/n“,n); 程序的运行结果是(分数:1.00)A.12300B.123 C.1D.321解析:解析 在函数中首先把整型数组 a10中的每个元素写入文件 d1.dat中,然后再次打开这个文件,把文件 d1 dat
21、中的内容读入到整型变量 n中,最后输出变量 n的值。26.现有如下程序段 #include “stdio.h“ main() int k30=12,324,45,6,768,98,21,34,453,456; int count=0,i=0; while(Li) if(ki%2=0|ki%5=0)count+; i+; printf(“%d,%d/n“,count,i); 则程序段的输出结果为(分数:1.00)A.7,8B.8,8C.7,10D.8,10 解析:解析 在 C语言中,定义一维数组的语句一般形式如下: 类型名 数组名常量表达式; 一维数组的引用形式为:数组名下标表达式。count
22、表示能被 2整除或被 5整除的个数,i 则计算有多少个数组元素。27.下列叙述中,不符合良好程序设计风格要求的是(分数:1.00)A.程序的效率第一,清晰第二 B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息解析:解析 当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。28.下列有关数据库的描述,正确的是(分数:1.00)A.数据库是一个 DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合 D.数据库是一组文件解析:解析 数据库(DataBase,简称 DB)
23、 是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有“集成”、“共享”的特点。29.可在 C程序中用作用户标识符的一组标识符是(分数:1.00)A.and 2007 B.Date y-m-dC.Hi DTomD.case Bigl解析:解析 在 C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线 3种字符组成,且第一个字符必须为字母或下画线。C 语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B) 和 C) 中的横线以及点都不合法,选项 D) 中的 case为 C语言关键字。30.若有定义:cha
24、r *st=“how are you“;,下列程序段中正确的是(分数:1.00)A.chara11;*p;strcpy(p=a+1,&st4); B.chara11;strcpy(+a,s;C.chara11;strcpy(a,s;D.chara,*p;strcpy(p=&a1,st+2);解析:解析 本题综合考查字符数组的赋值和 strcpy函数的用法。C 语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl“China”,如果想把“China”这 5个字符放到数组 strl中,除了逐个输入外,还能使用 strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:
25、strcpy(strl,“China”)或 strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将 str2的值传给 str1):str1str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。 strcpy函数的结构是:strcpy(字符数组 1,字符串 2) 其中,需要注意的是,字符数组 1的长度不应小于字符串2的长度,“字符数组 1”必须写成数组名形式,如(str1),“字符串 2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。31.以下程序的输出结果是 int f() static int i=0;
26、int s=1 s+=i;i+; return s; main() int i,a=0; for(i=0;i5;i+)a+=f(); printf(“%d/n“,a);(分数:1.00)A.20B.24C.25D.15 解析:解析 函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值;以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。32.以下关于 long、int 和 short类型数据占用内存大小的叙述中正确的是(分数:1.00)A.均占 4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由 C语言编译系统决定 解析:解析 在 AN
27、SI标准中,long、int 和 short分别占用 4、2 和 2个字节。但实际上对于某些 C编译系统,int 和 short 都占用 4个字节,所以说各种类型数据占用内存大小是由选择何种 C编译系统决定的。33.假定当前盘符下有两个如下文本文件: 文件名 a1.txt a2.txt 内容 123# 321# 则下面程序段执行后的结果为 #include “stdio.h“ void fc(FILE *p) char c; while(c=fgetc(p)!=#)putchar(c); main() FILE *fp; fp=fopen(“a1.txt“,“r“); fc(fp); fclo
28、se(fp); fp=fopen(“a2.txt“,“r“);fc(fp); fclose(fp); putchar(/n);(分数:1.00)A.123321 B.123C.321D.以上答案都不正确解析:解析 本题的功能是顺序的读两个文本文件;依次输出。当打开文件时出现错误,fopen 函数将返回 NULL。34.当用户要求输入的字符串中含有空格时,应使用的输入函数是(分数:1.00)A.scanf()B.getchar()C.gets() D.Setc()解析:解析 本题综合考查了输入函数的使用。scanf 函数会将空格视为分隔符,getchar 函数只能输入单个字符, getc 函数是
29、文件操作函数,显然都不符合题意。通过 gets函数输入字符串时,输入的空格被认为是字符串的一个字符。35.为了提高测试的效率,应该(分数:1.00)A.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.集中对付那些错误群集的程序 解析:解析 测试的目的是发现软件中的错误;经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。36.在深度为 5的满二叉树中,叶子结点的个数为(分数:1.00)A.32B.31C.16 D.15解析:解析 满二叉树是指除最后一层外,每一层上的所有结
30、点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点且深度为 m的满二叉树有 2m-1个结点。37.若变量已正确定义,有以下程序段 i=0; do printf(“%d,“,i);while(i+); printf(“%d/n“,i);其输出结果是(分数:1.00)A.0,0B.0,1 C.1,1D.程序进入无限循环解析:解析 对于 dowhile循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次 i的值“0,”,再接着判断表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为1,程序再次输出 i的值“1”。3
31、8.设有定义:char p=1,2,3,*q=p;,以下不能计算出一个 char型数据所占字节数的表达式是(分数:1.00)A.sizeof( B.sizeof(chaC.sizeof(*D.sizeof(p0)解析:解析 在本题中,p 和 q同为指向字符类型数据的指针。*q 和 p0同为字符型数据。选项 B) 、C) 和 D) 都符合题目的要求;选项 A) 计算得出的是指针类型数据所占的内存字节数。39.有以下程序 #include stdioh main() int a=1,2,3,4,y,*p=&a3; -p; y=*p;printf(“y=%d/n“,y); 程序的运行结果是(分数:1
32、.00)A.y=0B.y=1C.y=2D.y=3 解析:解析 在程序中指针变量 p初始指向 a3,执行 p减 1后,p 指向 a2,语句 y*p 的作用是把a2的值赋给变量 y,所以输出为 y3。40.若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(ab)a=b; c=a; if(c! =a)c=b; printf(“%d,%d,%d/n“,a,b,c); 其输出结果是(分数:1.00)A.程序段有语法错B.3,5,3 C.3,5,5D.3,5,7解析:解析 两个 if语句的判断条件都不满足,程序只执行了 ca 这条语句,所以变量 c的值等于3,变量 b的值没有变化,程
33、序输出的结果为 3,5,3。二、B填空题/B(总题数:13,分数:26.00)41.需求分析的最终结果是产生U 【1】 /U。(分数:2.00)填空项 1:_ (正确答案:需求规格说明书)解析:解析 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。42.软件维护活动包括以下几类:改正性维护、适应性维护、U 【2】 /U维护和预防性维护。(分数:2.00)填空项 1:_ (正确答案:完善性)解析:解析 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正
34、性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再次开发软件,以扩充软件功能、增强软件性能、改进加丁效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。43.数据结构分为逻辑结构与存储结构,线性链表属于U 【3】 /U。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:解析 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据
35、的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。44.某二叉树中度为 2的结点有 n个,则该二叉树中有U 【4】 /U个叶子结点。(分数:2.00)填空项 1:_ (正确答案:n+1)解析:解析 在任意一棵二叉树中,度为 0的结点(即叶子结点)总是比度为 0的结点多一个。45.U【5】 /U是数据库设计的核心。(分数:2.00)填空项 1:_ (正确答案:数据模型)解析:解析 数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。46.
36、阅读下面程序,则执行后的输出结果是U 【6】 /U。 #include “stdio.h“ main() int x,y,z; x=1;y=2;z=3; if(xy)if(xz)printf(“%d“,x); else printf(“%d“,y); printf(“%d/n“,z);(分数:2.00)填空项 1:_ (正确答案:3)解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else的 if相结合。因为 x不大于y,所以执行 printf(“%d/n“, z);语句。47.设变量已正确定义为整型,则表达式 n=i=2,+i,i+的值为U 【7】 /U。(分数:2.00
37、)填空项 1:_ (正确答案:3)解析:解析 本题考查的是 C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先 i被赋值为2,再自加 1,最后 i+的值计算为 3。48.有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k=n;k+)s=s+1.0/(k*(k+1); printf(“s=%f/n/n“,s); 请填空,使下面程序段的功能与之完全相同 s=1.0;k=1; while(U 【8】 /U)s=s+1.0/(k*(k+1);U 【9】 /U; printf(“s%f/n/
38、n“,s);(分数:2.00)填空项 1:_ (正确答案:8 kn)解析:9 k+ 解析 本题要求将一个 for循环改成 while循环。首先要保证循环条件相同,在 for循环中,每次执行循环之后,循环控制变量 k都会加 1,而 while循环则没有,故需在循环体中增加改变 k数值的语句“k+;”。49.以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,b 所指二维数组中其他数据不变。 #define N 4 void rotade (int aN,int bN) int
39、 i,j; for(i=0;iN;i+) biN-1U 【10】 /U;U 【11】 /UaN-1i;(分数:2.00)填空项 1:_ (正确答案:10 a0i)解析:11 bi0 解析 biN-1a0i实现把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中,bi0 aN-1i实现将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组中的第 0列。50.以下程序的输出结果是U 【12】 /U。 #include stdioh main() int i; for(i=a;if;i+,i+)printf(“%c“,i-a+A); printf(“/n“); (分数:2.00)
40、填空项 1:_ (正确答案:ACE)解析:解析 在本题中,for 循环体每执行完一次,变量 i的值自加两次。i 的初值为“a”,执行一次循环后变为“c”,之后再变成“e”,当其变为“g”时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式“i-a+A”即表示输出 i对应的大写字母,结果为 ACE。51.下面程序的运行结果是U 【13】 /U。 #includestdioh #define SIZE 12 main() char sSIZE;int i;for(i=0;iSIZE;i+) si=A+i+321; sub(s,7,SIZE-1); for(i=0;iSIZE;i+) pri
41、ntf(“%c“,si); printf(“/n“); sub(char *a,int t1,int t2) char ch; while(t1t1) ch=*(a+t1); *(a+t1)*(a+t2); *(a+t2)ch; t1+;t2-; (分数:2.00)填空项 1:_ (正确答案:a b c d e f g l k j i h)解析:解析 本题主要考查了字符变量可参与的运算。因为字符在计算机中是以 ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的 ASCII码值比它对应的小写字母 ASCII码值小 32。52.mystrlen函数的功
42、能是计算 str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) int i; for(i=0;U 【14】 /U!/0;i+); return(i);(分数:2.00)填空项 1:_ (正确答案:*(str+i) 或 stri)解析:解析 str 是指针变量,它指向字符型数据,在循环过程中,可以用。(str+i)来访问字符串中的第 i个元素,判断是否为结束标志,如果不是,ii+1,继续取下一个元素进行判断,直到*(str+i)的值为/0为止,也可以用下标的方式引用字符,如*(str +i)相当于 stri。53.设有定义“struct int a;float b;char c;abc,*p_abc=&abc;”,则对结构体成员 a的引用方法可以是 abc.a和 p_abc U【15】 /Ua。(分数:2.00)填空项 1:_ (正确答案:-)解析:解析 若结构体变量 abc有成员 a,并有指针 p_abc指向结构变量 abc,则引用变量 abc成员 a的标记形式有 abc.a和 p_abc-a。