1、国家二级( C语言)机试模拟试卷 62及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)循环队列是顺序存储结构 ( B)循环队列是链式存储结构 ( C)循环队列是非线性结构 ( D)循环队列的插入运算不会发生溢出现象 2 下列叙述中正确的是 ( A)所有数据结构必须有根结点 ( B)所有数据结构必须有终端结点(即叶子结点) ( C)只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构 ( D)没有根结点或没有叶子结点的数据结构一定是非线性结构 3 下列关于算法的描述 中错误的是 ( A)算法强调动态的执行过程,不同于静态的计算公式 ( B)算法必须能在有限个步骤之后终止 ( C)
2、算法设计必须考虑算法的复杂度 ( D)算法的优劣取决于运行算法程序的环境 4 在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数 ( A)相同,元素的存储顺序与逻辑顺序一致 ( B)相同,但其元素的存储顺序可以与逻辑顺序不一致 ( C)不同,但元素的存储顺序与逻辑顺序一致 ( D)不同,且其元素的存储顺序可以与逻辑顺序不一致 5 设二叉树如下: 则中序序列为 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 6 下面不属于软件需求分析阶段工作的是 ( A)需求获取 ( B)需求计划 ( C)需求分析 ( D)需求评审 7
3、 下面不属于黑盒测试方法的是 ( A)边界值分析法 ( B)基本路径测试 ( C)等价类划分法 ( D)错误推测法 8 在数据库系统中,数据模型包括概念模型、逻辑模型和 ( A)物理模型 ( B)空间模型 ( C)时间模型 ( D)数据模型 9 若实体 A和 B是一对一的联系,实体 B和 C是多对一的联系,则实体 A和 C的联系是 ( A)多对一 ( B)一对多 ( C)一对一 ( D)多对多 10 某二叉树中共有 935个结点,其中叶子结点有 435个,则该二叉树中度为 2的结点个数为 ( A) 64 ( B) 66 ( C) 436 ( D) 434 11 C语言整数不包括 ( A)带小数
4、点的整数 ( B)正整数 ( C)负整数 ( D)无符号整数 12 设 a,b,c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是 ( A) a = 1 % (b = c = 2); ( B) a = (b = 3) * c; ( C) a = b = c / 10; ( D) a = 2 = (b = 9) = 1; 13 以下选项中,合法的实数是 ( A) 1.5E2 ( B) E1.1 ( C) 2.10E ( D) 1.9E1.4 14 关于程序设计基本概念,以下叙述错误的是 ( A)计算机可以直接执行由任意高级语言编写的程序 ( B)高级语言都有与之对应的编译程序或解释程序 (
5、 C)用于任何一种计算机高级语言都可以把算法转换为程序 ( D)结构化算 法可以解决任何复杂的问题 15 以下不能用于实型数据的运算符是 ( A) % ( B) / ( C) * ( D) + 16 C语言中,最基本的数据类型包括 ( A)整型、实型、逻辑型 ( B)整型、字符型、数组 ( C)整型、实型、字符型 ( D)整型、实型、结构体 17 若有定义: int a=0,b=0,c=0,d=0; ,有 C语言表达式 (a+ while (ch E) printf(“%d“, ch - A); ch+; printf(“n“); 程序运行后的输出结果是 ( A) 123 ( B) ABC (
6、 C) abc ( D) 12 19 以下关于指针的叙述,错误的是 ( A)两个基类型相同的指针变量不能指向同一个对象 ( B)可以通过对指针变量加上或减去一个整数来移动 指针 ( C)在关系表达式中可以对两个指针变量进行比较 ( D)一个指针变量可以通过不同的方式获得一个确定的地址值 20 对于函数声明 void fun(float array, int *ptr); 下叙述正确的是 ( A)调用函数时, array数组的元素和 ptr都是按值传送 ( B)函数声明有语法错误,参数 array 缺少数组大小定义 ( C)调用函数时, array数组中将存储从实参中复制来的元素值 ( D)函数
7、参数 array, ptr 都是指针变量 21 有以下程序 #include stdio.h main( ) int i, k; int array42 = 1,0, 0, 2,9, 3; for (i=0; i 2; i+) for (k=0; k 3; k+) printf(“%d,“, arrayki); printf(“n“); 程序运行后的输出结果是 ( A) 1,0,2,0,0,9, ( B) 1,2,4,9,6,0, ( C) 2,9,0,0,1,4, ( D) 1,2,0,1,4,1, 22 要求定义一个具有 6个元素的 int型一维数组,以下选项中错误的是 ( A) int
8、N = 6, aN; ( B) int a2*3=0 ( C) #define N 3 int aN+N; ( D) int a = 1,2,3,4,5,6; 23 有以下程序 #include stdio.h main( ) char b310,c; int i; for (i=0; i 2; i+) scanf(“%s“, bi); i=0; while (c=getchar()!=n) b2i+ = c; b2i = 0; printf(“%s%s%sn“, b0, b1, b2); 执行时若输入以下字符串 : Peach flower is pink.回车 则输出结果是 ( A) Pe
9、ach flower is pink. ( B) Peachfloweris pink. ( C) Peachflowerispink. ( D) Peachflower is pink. 24 有以下程序 #include stdio.h main( ) char w20, a510 = “abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz“; int i, j; for (i=0; i 5; i+) j = 0; while (aij != 0) j+; wi = aij-2; w5 = 0; puts(w); 程序运行后的输出结果是 ( A) agmrw
10、 ( B) ekpuy ( C) djotx ( D) flqvz 25 有以下程序 #include stdio.h #include string.h main( ) char name9 = “c#line“; char* str = name; printf(“%d,%d,%d,%dn“, sizeof(name), strlen(name), sizeof(str), strlen(str); 程序运行后的输出结果是 ( A) 9,7,4,7 ( B) 8,6,9,6 ( C) 8,6,3,6 ( D) 10,8,5,8 26 有以下程序 #include stdio.h main(
11、 ) int password; char *p, old_str10 = “wind“; scanf(“%d“, p = old_str; while (*p) printf(“#%c“, *p + password); p+; printf(“n“); 程序运行时,从键盘输入 2回车,输出结果是 ( A) #y#k#p#f ( B) #wi#nd# ( C) #wi#nd# ( D) #2222# 27 若有定义: char *ps =“aa“,“bb“,“cc“,“dd“;,则以下叙述正确的是 ( A) ps0是字符 串 “aa“ ( B) *ps0是字符串 “aa“的首地址 ( C)
12、ps0是字符串 “aa“的首地址 ( D) *ps0是字符串 “aa“ 28 若有定义: char *ps = “aa“, “bb“, “cc“, “dd“;, 则以下叙述正确的是 ( A) *ps0是字符 a ( B) *ps0是字符串 “aa“ ( C) ps0是字符 a ( D) ps是字符串 “aa“ 29 以下合法的转义字符是 ( A) 0X41 ( B) 0x41 ( C) X41 ( D) x41 30 在源程序的开始处加上 #include stdio.h 进行文件引用的原因,以下叙述正确的是 ( A) stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正
13、确使用 printf、 scanf等函数 ( B)将 stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行 ( C)将 stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接 ( D)将 stdio.h中标准输入输出函数的源程序插入到引用处,以 便进行编译链接 31 设有定义: int a10=0,1,2,3,4,5,6,7,8,9,*p=a,i;,若 0i9,则对 a数组元素的引用错误的是 ( A) a10 ( B) *( c = (13 1)|1; d = (13 1)|1; printf(“%d,%dn“, c, d); 程序运行后的输 出结果是
14、( A) 6,1 ( B) 1,1 ( C) 7,1 ( D) 7,2 33 有以下程序 #include stdio.h #include string.h struct S char name10; ; main() struct S s1, s2; strcpy(s1.name, “XXX“); strcpy(s2.name, “=“); s1 = s2; printf(“%sn“, s1.name); 程序运行后的输出结果是 ( A) = ( B) XXX ( C) #NAME? ( D) X= 34 有以下程序 #include stdio.h main( ) int i, arra
15、y6 = 1, 5, 0, 4; for (i=0; i 5; i+) printf(“%d,“, arrayi printf(“n“); 程序运行后的输出结果是 ( A) 1,2,1,2,0 ( B) 1,5,0,4,0, ( C) 1,5,5,4,0, ( D) 0,4,0,4,0 35 有以下程序 #include stdio.h #include stdlib.h void fun(int *s, int x23) *s=*(x1+1); main() int a23 = 1,2,3,4,5,6, *p; p = (int*)malloc(sizeof(int); fun( print
16、f(“%dn“,*p); 程序的运行结果是 ( A) 5 ( B) 2 ( C) 6 ( D) 3 36 有如下定义: struct int num; char name10; struct int y; int m; int d; birth; s,*ps= 以下对内嵌结构体成员的引用形式错误的是 ( A) ps- birth.y ( B) s.birth.y ( C) ps.birth.y ( D) (*ps).birth.y 37 有以下程序 #include stdio.h main( ) FILE *fp; int i, a6 = 1,2,3,4,5,6, k; fp = fopen
17、(“data.dat“, “w+“); fprintf(fp, “%dn“, a0); for (i=1; i 6; i+) rewind(fp); fprintf(fp, “%dn“, ai); rewind(fp); fscanf(fp, “%d“, fclose(fp); printf(“%dn“, k); 程序运行后的输出结果是 ( A) 6 ( B) 21 ( C) 123456 ( D) 654321 38 以下程序段中,与其他三个功能不同的程序段是 ( A) s=0;i=1; for( ; ; ) s+=i; i+; if(i =10) break; ( B) s=0,i=1;
18、for( ; i =10; ) s+=i,i+; ( C) s=0; for(i=1;i =10;i+)s+=i; ( D) for(s=0,i=1; i =10; s+=i,i+) ; 39 设有定义: int a=0,b=1;,以下表达式中,会产生 “短路 “现象,致使变量 b的值不变的是 ( A) +a|+b ( B) a+|+b ( C) a+ struct node*next; NODE; void fun(NODE*h) NODE*P, *q, *r; /*found*/ P=h一 【 1】 ; /*found*/ if(p=【 2】 )return, q=P一 next: P一
19、next=NULL; while(q) r=q一 next; t q一 next=p; /*found*/ P=q; q=【 3】 ; h一 next=P; NODE*czeatlist: (int a) NODE*h, *P, *q; int i; h=(NODE *)malloc(sizeof(NODE); h一 next=NULL: for(i=0; i N; i+) q=(NODE*)malloc(sizeof (NODE); q一 data=ai, q- next=NULL: if(h一 next=NULL) h一 next=P=q, elseP一 next=q; P=q; ) re
20、turn h: void outlist(NODE*h) NODE*P; P=h一 next: if(P=NULL) printf(“The list is NULL!n”); else printf(“ nttead”); do printf(“一 d”, P一 data); P=P一 next;) while(P!=NULL), pzintf(“一 Encl n”); main() NODE*head; int aN=2, 4, 6, 8, 10; head=creatliSt(a), pzintf(“ nThe original list: n”); outlist(head); fun
21、(head); printf “ nThe list after inverting: n”); outlist(head); 三、程序修改题 42 下列给定程序中,函数 fun的功能是:将 s所指字符串中的字母转换为按宁母序列的后续字母 (如 “Z”转化为 “A”, “z”转化为 “a”),其他字符不变。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include Stdlib h #include Stdio h #include ctype h #include conio h void fun(cha
22、r*s) /*found*/ while(*s!=) if(*s =A *s =Z|*s =a *S =Z) if(*S=Z)*S=A; else if(*S=Z)*S=a, else *S+=1; /*found*/ (*S)+; voidmain() char s80; system(“CLS”); printf(“ n Enter a string with length 80: nn”); gets(S), printf(“ n The string: n n”); puts(S); fun(S); printf(“ n n The Cords: n n”); puts(S); 四、程
23、序设计题 43 编写函数 fun,其功能是:求 ss所指字符串中指定字符的 个数,并返回此值。 例如,若输入字符串 “123412132”,输入字符为 “1”,则输出 3。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdlib h #include conio h #include Stdio h #define M 81 int fun(char*SS, char c) voidmain() char aM, ch; system(“CLS”); printf(“ nPleas
24、e enter a string: ”); gets(a); printf (“ nPlease enter a char: ”); ch=getchar(); printf(“ nThe number of the char is: d n”, fun(a, ch); 国家二级( C语言)机试模拟试卷 62答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 循环队列是队列的一种顺序存储结构 . 线 性结构是个数据元素构成的有限序列,除第一个元素外的每一个元素,有且只有一个前件,除最后一个元素外,有且只有一个后件。循环队列是线性结构。当需要插入的数据大于循环队列的存储长度,入队运算会覆
25、盖前面的数据,发生溢出现象。故 A选项正确。 2 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线性结构,在数据结构中习惯称为线性表, D选项正确。图是可能不包含根结点或叶子结点的数据结构, AB选项错误。数据结构中若有中间 结点不满足只有一个前件或者后件条件,则不属于线性结构, C选项错误。 3 【正确答案】 D 【试题解析】 算法是指对解题方案的准确而完整的描述,简单地说,就是解决问题的操作步骤。算法不同于数学上的计算方法,强调实现, A选项叙述正确。算法的有穷性是指,算法中的操作步骤为有限个,且
26、每个步骤都能在有限时间内完成, B选项叙述正确。算法复杂度包括算法的时间复杂度和算法的空间复杂度。算法设计必须考虑执行算法所需要的资源,即时间与空间复杂度,故 C选项叙述正确。算法的优劣取决于算法复杂度,与程序的环境无关,当算法被 编程实现之后,程序的运行受到计算机系统运行环境的限制,故正确答案为 D选项。 4 【正确答案】 A 【试题解析】 顺序表具有以下两个基本特征:线性表中所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。在顺序表中,每个元素占有相同的存储单元。 A选项正确。 5 【正确答案】 B 【试题解析】 二叉树遍历可以分为 3种:前序遍历(访问
27、根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访 问右子树之后)。本题中前序遍历为 ABDEGCFH,中序遍历为 DBGEAFHC,后序遍历为 DGEBHFCA,故 B选项正确。 6 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,而需求计划不属于需求分析阶段的工作,故正确答案为 B选项。 7 【正确答案】 B 【试题解析】 常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。基本路径测试属于白盒测试,故正确答案为
28、B选项。 8 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为 3种类型:概念数据模型、逻辑数据模型、物理数据模型,故 A选项正确。 9 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。 A与 B是 1:1联系, B与 C是 m:1联系,则 A与 C是 m:1联系,即多对一,故 A选项正确。 10 【正确答案】 D 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一 棵二叉树,度为 0的结点(即叶子结点)总是比度为
29、 2的结点多一个。叶子结点有 435个,则度为 2的结点为 434, D选项正确。 11 【正确答案】 A 【试题解析】 C语言整数包括正整数,负整数,无符号整数,不含带小数点的整数,故答案选 A选项。 12 【正确答案】 D 【试题解析】 D选项中,()具有最高优先级, b先赋值 9,再根据赋值运算符号自右向左进行赋值,再给 b赋值为 1,再计算 2=b,赋值运算左边必须是一个变量, 2是常量,语法错误,答案为 D选项。 13 【正确答案】 A 【试题解析 】 E表示 “10的幂次 “,后面必须接整数,排除 B,C,D选项,答案为A选项。 14 【正确答案】 A 【试题解析】 计算机只能识别
30、机器语言,不能直接识别由高级语言编写的程序,答案为 A选项。 15 【正确答案】 A 【试题解析】 %符号两边必须是整数,因此答案选 A。 16 【正确答案】 C 【试题解析】 C语言中,最基本的数据类型包括整型、实型、字符型,答案为 C选项。 17 【正确答案】 A 【试题解析】 表达式 1:表达式 2:表达式 3,若表达式 1为真,则执行表达式2,否 则执行表达式 3。逻辑与运算符遵循 “短路求值 “策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式 (a+第二 次输出第二列前三行数,分别是 0,0,9,因此答案为 A选项。 22 【正确答案】 A 【试题
31、解析】 数组名后面括号的值必须是整形常量,不可以是变量, A选项定义错误,答案为 A选项。 23 【正确答案】 D 【试题解析】 由于用 “%s“格式输出字符串时,是以空格作为间隔符,因此,输入给 b0=“Peach“, b1=“flower“,而 while语句给 c赋值时, getchar()能识别空格符, b2=“ is pink“,答案为 D选项。 24 【正确答案】 B 【试题解析】 在 for循环中,执行完 while语句后, j值为每行字符串的长度,因此 wi = aij-2,比如 i=0;j=6,则 w0=a04=e,循环依次赋值,最后输出w,答案为 B选项。 25 【正确答案
32、】 A 【试题解析】 由于 name是一个长度为 9的一维数组,故在内存中占用 9个字节长度,而其中字符串 “c#line“只有 7个字符, strlen()函数返回的是该字符串的长度,不包含结束符, str是一个指针变量,占用 4个字节长度,但是由于 name首地址赋给了 str指针变量,在调用 strlen()函数时,返回的是指针对应地址单元的字符串的长度 7,因此答案为 A选项。 26 【正确答案】 A 【试题解析】 首先定义了一个指针 p指向数组的首地址,在 while语句中,执行功能是如果当前指针指向地址单元内字符不等于空字符 0,则输出 #和指针对应地址元素的值在 ASCII码加
33、2后变换的字符常量,因此,答案为 A选项。 27 【正确答案】 C 【试题解析】 定义一个串数组指针 ps后, ps是指针变量, ps0指向的是数组首个元素的地址,即字符串 “aa“的首地址,答案为 C选项。 28 【正确答案】 A 【试题解析】 指针数组 ps定义后, ps0代表数组首个元素的地址,即 “aa“的地址,同时也是 “aa“第一个字符 a的地址,所以 *ps0代表字符 a,答案为 A选项。 29 【正确答案】 D 【试题解析】 xhh表示 1到 2位十六进制所代表的字符,故答案为 D选项。 30 【正确答案】 A 【试题解析】 stdio.h文件中包含标准输入输出函数的函数说明,
34、预处理指令#include stdio.h是使程序可以去该文件中找到 printf,scanf等函数 以便使用,因此答案为 A选项。 31 【正确答案】 A 【试题解析】 长度为 n的数组其各个元素的下标应该是从 0到 n-1,因此,长度为10的数组 a,第 10个元素为 a9,而不是 a10,答案为 A选项。 32 【正确答案】 C 【试题解析】 表达式 c = (13 1)|1中,是右移符号, 13换算成二进制后右移 1位,再和 1进行按位或运算,结果为 7;表达式 d = (13 1)|1中,首先判断13是否大于 1,此时条件成立返回 1后,再和 1进行或运算,结果为 1,因此答案为 C
35、选项。 33 【正确答案】 A 【试题解析】 主函数首先为结构体定义两个变量 s1,s2,分别使用字符串拷贝函数 strcpy()为 s1和 s2的成员 name赋值,再将 s2中的成员信息赋值给 s1,因此输出为 “=“,答案为 A选项。 34 【正确答案】 D 【试题解析】 主函数首先定义一个数组 array6,初始化前 4个元素的值,其余默认值为 0。在 for循环中,为数组 array中每一个元素换算成二进制数后和二进制整数 “100“进行按位与运算,再将结果进行输出,因此答案为 D选项。 35 【正确答案】 A 【试题解析】 malloc( size)函数作用是在内存的动态存储区分配
36、一个长度为size的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给 p指针,然后取 p指针的地址,调用 fun函数。 fun函数中对指向指针的指针 s指向的内存单元赋值,其中 x1表示二维数组 x的第二行的行地址, x1+1表示二维数组x的第二行第二列的地址,所以 fun函数的功能是将二维数组 x的第二行第二列的值,即 x11赋值给 *s, *s为 p,所以 *s代表 *p, x11与 a11等价,因此答案为 A选项。 36 【正确答案】 C 【试题解析】 使用结构体指针对结构体成员进行访问时,形式为结构指针名 -结构成员名,或者 (*结构指针名 ).结构成员名,题目中 ps为
37、结构体指针,因此判断C选项引用形式错误,答案为 C选项。 37 【正确答案】 A 【试题解析】 本题首先定义文件指针变量 fp和一个数组 a,再打开一个文件“data.dat“,随后先给文件写入数据 a0,由于 rewind函数是将文件指针从当前位置重新指向文件开始位置,所以 for循环依次将数组 a中的数据写入文件开始位置,退出循环后,文件中的 数据顺序为: 654321,重新使指针指向文件开始位置,将此时 fp指向的数据(即文件中第一个数据 6)写入变量 k中,关闭文件,输出 k值,答案为 A选项。 38 【正确答案】 A 【试题解析】 B,C,D选项都表示对 1到 10进行累加后赋给 s
38、,而选项 A中含 break语句,循环体只执行一次,结束整个循环过程,因此答案为 A选项。 39 【正确答案】 D 【试题解析】 +放在变量前面时,表示将变量 +1,再参与其他操作, a+ & b+时,由于 a值是 0直接判定与运算结果为 0,忽视 b+的值,因此 b值 不发生改变,答案为 D选项。 40 【正确答案】 A 【试题解析】 常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义, C语言也不允许这样做,编译会出错, B选项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意
39、义的, C语言不允许这样做,编译会出错, C选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量, D选项错误。故答案为 A选项。 二、程序填空 题 41 【正确答案】 (1)next (2)NULL (3)r 【试题解析】 填空 1:本空考查了为 p赋初值,根据题目的要求是将带头结点的单向链表逆置可知, p的初值应该为 h一 next。 填空 2: if判断语句表明当 p等于什么时就要返回,因此只能当 p等于 NULL时返回,不用做后面的链表的逆置了。 填空 3:把 q的指针向后移动,才能实现将带头结点的单向链表逆置。因此本空填写 r。 三、程序修改题
40、 42 【正确答案】 (1)while(*s)或 while(*s!= 0) (2)s+; 【试题解析】 (1)通过 while语句可对字符串所有字符进行遍历,循环条件足对当前字符进行判断,若当前字符不是字符串结尾,则对其进行其他操作。 (2)因为该循环通过指针 s的移动遍历字符串,所以每循环一次要使指针向后移动一个位置,而不是将指针所指的元素加 1。 四、程序设计题 43 【正确答案】 int fun(char*ss, char c) int i=0; for(; *ss!= 0; ss+) if(*ss=c) i+; *求出 8s所指字符串中指定字符的个数 * return i; 【试题解析】 从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是 0,判断语句用来判断当前字符是否为指定宁符。最后返回指定字符的个数。