1、二级 C语言笔试 305及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.有以下程序: #include stdio.h main( ) int a,b,d =25; a = d/10%9;b = a printf(“% d,% d/n“ ,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.6,1B.2,1C.6,0D.2,02.有以下程序: #include stdio.h main( ) int i=1,j =2,k =3; if(i + = 1 程序运行后的输出结果是( )。(分数:1.00)A.123B.234C.2
2、23D.2333.有以下程序: #include stdio.h main( ) int num44=1,2,3,4,5,6,7,8,9,10,11,12,13;14,15,16,i,j; for(i =0;i4;i + ) for(j=0;j=i;j+)printf(“%4c“,“); for(j=_;j4;j + )printf( “%4d“ ,humi j ); printf(“ /n“ ); 若要按以下形式输出数组右上半三角; 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是( )。(分数:1.00)A.i-1B.iC.i+1D.4-i4.以下不能定义为用户标识
3、符的是( )。(分数:1.00)A.MainB._0C._intD.sizeof5.有以下程序: #include stdio.hmain( ) int m =12,n=34; printf( “% d% d“ ,m+ , +n); printf(“% d% d /n“ ,n + , +m); 程序运行后的输出结果是( )。(分数:1.00)A.12353514B.12353513C.12343514D.123435136.有以下程序: #include stdio.h #define N 20 fun(int a ,int n,int m) int i,j; for(i=m;i :n;i-)
4、 ai+1 =ai; main( ) int i,aN. = 11,2.3,4,5,6,7,8,9,10; fun( a,2,9) for(i =0;i5;i + ) printf(“% d“ ,ai );程序运行后的输出结果是( )。(分数:1.00)A.10234B.12344C.12334D.122347.有以下程序: #include stdio.h main( ) char s =“159“ , * p; p=s; printf( “% c“, * p + + ); printf(“%“, * p+);程序运行后的输出结果是( )。(分数:1.00)A.15B.16C.12D.598
5、.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:1.00)A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计9.下图所示二叉树的中序遍历结果为( )。 (分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA10.以下对结构体类型变量 td的定义中,错误的是( )。(分数:1.00)A.typcdef struct aa int n; float m; AA; AA td;B.struct aa int n; float m; struct aa td;C.struct int n
6、; float m; aa; struct aa td;D.struct int n; float m; td;11.以下选项中可作为 C语言合法常量的是( )。(分数:1.00)A.-80B.-080C.-8e1.0D.-80.0e12.有以下程序: #include stdio.hpoint ( char * p) p + = 3; main( ) char b4 = a,b,c,d , *p=b; point(p); printf( “% c /n“ , * p);(分数:1.00)A.aB.bC.cD.d13.有以下程序:#include stdio.h#include string.
7、hmain( ) char a 7 = “a0 /0a0 /0“; int i,j; i = sizeof(a); j = strlen(a); printf(“ % d %d /n“ ,i,j); 程序运行后的输出结果是( )。(分数:1.00)A.22B.76C.72D.6214.设有如下说明: typedef struet ST long a;int b;char c2; NEW;则下面叙述中正确的是( )。(分数:1.00)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型D.NEW是一个结构体变量15.在计算机中,算法是指( )。(分数:1.00)A.查询方法B
8、.加工方法C.解题方案的准确而完整的描述D.排序方法16.有以下程序:#include stdio.hvoid f(int * x,int * 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(pq) f(p,q) ;p + ;q -; for(i =0;i8;i + ) printf(“ % d,“ ,ai); 程序运行后的输出结果是( )。(分数:1.00)A.8,2,3,4.,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,
9、7,8,D.8,7,6,5,4,3,2,1,17.以下叙述中错误的是( )。(分数:1.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行过程中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数18.有以下程序: #include stdio.h main( ) int a32=0 ,( *ptr)2,i,j; for(i=0;i2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+; for(i =0;i3;i +
10、 ) for(j =0;j2;j + ) prinff( “%2d“ ,ai j ); prinff(“ /n“ ); 若运行时输入:1 2 3 回车,则输出结果是( )。(分数:1.00)A.产生错误信息B.10 20 00C.12 30 00D.10 20 3019.在单链表中,增加头结点的目的是( )。(分数:1.00)A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单键表是线性表的链式存储实现20.若整型变量 a,b,c,d 中的值依次为:1,4,3,2 则条件表达式 ab? a:cd? c:d 的值是 ( )。(分数:1.00)A.1B.2C.3D.4
11、21.在软件工程中,白盒测试法可用于测试程序的内部结构,此方法将程序看做是( )。(分数:1.00)A.循环的集合B.地址的集合C.路径的集合D.目标的集合22.有以下程序: #include stdio.h main( ) intc = 35; printf( “% d /n“ , e 程序运行后输出结果是( )。(分数:1.00)A.0B.70C.35D.123.按条件 f对关系 R进行选择,其关系代数表达式为( )。(分数:1.00)A.R|X|RB.C.f(D.f(24.以下能正确定义一维数组的选项是( )。(分数:1.00)A.int a5 =0,1,2,3,4,5;B.char a
12、 = 0,1,2,3,4,5;C.char a = A,B,C ;D.int a5 = “0123“;25.以下选项中不能作为合法常量的是( )。(分数:1.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e026.有以下结构体说明和变量定义,相应的链表如图所示: (分数:1.00)A.p- next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next27.下列叙述中,不属于软件需求规格说明书的作用的是( )。(分数:1.00)A.便于用户、开发人员相互理解和交流B.反映用户问题的结构,可以作为软件开发工作的基础
13、和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析28.以下语句或语句组中能正确进行字符串赋值的是( )。(分数:1.00)A.ehar以*sp; * sp = “right!“;B.char s10 ;s = “right!“;C.char s 10; * s = “right !“;D.char * sp = “right !“;29.程序中若有如下说明和定义语句: char fun(char *); main() char * s=“one“, a5=0,(* f1)()=fun,ch; 以下选项中对函数 fun的正确调用语句是( )。(分数:1.00)A.(* f1)(;B
14、.* f1(* ;C.fun( seanf( “m = % dn = % dp = % d“, 若想从键盘上输入数据,使变量 m中的值为 123,n中的值为 456, p中的值为 789,则下列选项中正确的输入是( )。(分数:1.00)A.m = 123n =456p =789B.m = 123 n =456 p =789C.m= 123,n =456,p =789D.123 456 78932.有以下函数:fun(char * a,char *b) while(*a! =/0)b+; return( *a-*b); 该函数的功能是( )。(分数:1.00)A.将 b所指字符串连接到 a所指
15、字符串中B.计算 a和 b所指字符串的长度之差C.将 b所指字符串连接到 a所指字符串后面D.比较 a和 b所指字符串的大小33.有以下程序: #include stdio.h main ( ) int a3 3 , *p,i; p= i+)pi=i: for(i=0; i3;i+)Printf(“%d“,a1i); 程序运行后的输出结果是( )。(分数:1.00)A.012B.123C.234D.34534.以下与函数 fseek (fp, OL, SEEK_SET)有相同作用的是( )。(分数:1.00)A.feof(fB.ftell(fC.fgetc(fD.rewind(f35.以下叙述
16、中正确的是( )。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间36.算法具有五个特性,以下选项中不属于算法特性的是( )。(分数:1.00)A.有穷性B.简洁性C.可行性D.确定性37.有定义语句:int b;char c10 ;则正确的输入语句是( )。(分数:1.00)A.seanf(“%d%s“ ,B.scanf(“%d%s“,C.seanf(“%d%s“,b,;D.scanf(“%d%s“,b,&;38.有以下程序:#include stdio. hmain( ) int a =
17、1,2,3,4,5,6,7,8,9,0 , * p; for(p =a;pa+10;p+) printf(“%d,“ , *p); 程序运行后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,39.有以下程序:#include stdio.hmain( ) int a=1,b; for(b =1;b =10;b+) if(a =8) break; if(a%2 = 1) a + =5;continue; a- =3; printf
18、( “% d /n“ ,b);程序运行后的输出结果( )。(分数:1.00)A.3B.4C.5D.640.已有定义:chara=“xyz“,b:x,y,z;以下叙述中正确的是( )。(分数:1.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对41.若有以下说明和定义: union dt int a; char b; double c; data; 以下叙述中错误的是( )。(分数:1.00)A.data的每个成员起始地址都相同B.变量 data所占的内存字节数与成员 c所占字节数相等C.程序段:data=5; printf(“%f
19、/n“,dat;输出结果为 5.000000D.data可以作为函数的实参42.有以下程序:#include stdio.h#define P 3void F(int x) return(P* x* x); tmain( ) printf(“ % d /n“ ,F(3 + 5) ); 程序运行后的输出结果是( )。(分数:1.00)A.192B.29C.25D.编译出错43.有以下程序:#iaclude stdio.hmain( ) intp8 :11,12,13,14,15,16,17,18,i=0,j:0; while(i+7) if(pi%2) j+ =pi; printf( “%d /
20、n“ ,j);程序运行后的输出结果是( )。(分数:1.00)A.42B.45C.56D.6044.单个用户使用的数据视图的描述称为( )。(分数:1.00)A.外模式B.概念模式C.内模式D.存储模式45.有以下程序:#include stdio.hprt(int * m,int n) int i; for(i =0;in;i + ) mi +;main( ) int a = 1,2,3,4,5 ,i; prt(a,5); for(i =0;i5;i + ) printf( “% d,“ ,ai );程序运行后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,B.2,3,4,5,
21、6,C.3,4,5,6,7,D.2,3,4,5,146.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题,从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考47.有以下程序:#include stdio.hint f1 (int x,int y) return x y? x :y; int f2 (im x,int y) return x y? y: x; main( ) int a=4,b=3,c=5,d=2,
22、e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(e,d); g=a+b+e+d-e-f; printf( “% d,% d,% d /n“ ,e,f,g);程序运行后的输出结果是( )。(分数:1.00)A.4,3,7B.3,4,7C.5,2,7D.2,5,748.有以下程序: #includestdio.h void WriteStr(char *fn, char *sir) FILE * fP; fP=fopen(fn,“w“); fput6(str,fp); fclose(fp); main() WriteStr(“t1.dar“,“start“
23、); WrlteStr(“t1dat“,“end“); 程序运行后,文件 t1.dat中的内容是( )。(分数:1.00)A.startB.endC.startendD.endrt49.数字字符0的 ASCII值为 48, 若有以下程序: #include stdio.h main( ) char a=1,b =2; printf( “% c,“,b + + ); printf(“ % d /n“ ,b - a); 程序运行后的输出结果是( )。(分数:1.00)A.3,2B.50,2C.2,2D.2,5050.用树形结构来表示实体之间联系的模型称为( )。(分数:1.00)A.关系模型B.层
24、次模型C.网状模型D.数据模型二、B填空题/B(总题数:18,分数:36.00)51.某二叉树中度为 2的结点有 18个,则该二叉树中有U 【1】 /U个叶子结点。(分数:2.00)填空项 1:_52.在面向对象方法中,类的实例称为U 【2】 /U。(分数:2.00)填空项 1:_53.问题处理方案的正确而完整的描述称为U 【3】 /U。(分数:2.00)填空项 1:_54.在关系数据库中把数据表示成二维表,每一个二维表称为U 【4】 /U。(分数:2.00)填空项 1:_55.诊断和改正程序中错误的工作通常称为U 【5】 /U。(分数:2.00)填空项 1:_56.以下程序运行时,若从键盘输
25、入:10 20 30 回车,输出的结果是U 【6】 /U。 #includestdio.h main() int i=0,j=0,k=0; scanf(“% d%* d%d“, prinff(“% d / n“ , S( i + j) ); (分数:2.00)填空项 1:_58.以下程序运行后的输出结果是U 【8】 /U。 #include stdio, h main( ) int a=3,b=4,c=5,t=99; if(ba a=c;c=t; if(ae b=a;a=t; printf( “%d %d %d /n“ ,a,b,e); (分数:2.00)填空项 1:_59.已知字符A的 AS
26、CII代码值为 65,以下程序运行时若从键盘输入:B33 回车,则输出结果是U【9】 /U。 #include stdio.h main( ) char a,b; a = getchar( ) ;seanf( “% d“ , a=a-A +0;b=b* 2; prinff( “% c % c /n“ ,a,b); (分数:2.00)填空项 1:_60.以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串“yes!”,否则函数返回字符串“no!”,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adsda。请填空。 #include stdio
27、, h #include string, h char * huiwen(char * str) char *p1, * p2; int i,t=0; p1 = str;p2 =U 【10】 /U; for(i =0;i= strlen(str)/2;i + ) if( * pl + ! = * p2 - ) t = 1 ;break if(U 【11】 /U) return( “yes !“ ); else return( “no!“ ); main( ) char str50; printf( “Iaput:“ ); scanf(“ % s“, str); printf(“%s /n“,U
28、 【12】 /U);(分数:2.00)填空项 1:_61.以下程序运行后的输出结果是U 【13】 /U #include stdio, h fun( int a) int b = 0; static int c = 3; b+;c+; return(a + b + c); main( ) int i,a = 5; for(i =0;i 3;i + ) prinff(“% d% d“ ,i,fun(a) ); printf(“ /n“ ); (分数:2.00)填空项 1:_62.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值。请填空。 #include stdio, h
29、 void fun(int,int,int( * )4 ,int* ); main ( ) int a3 4 = 12,41,36,28, 19,33,15,27, 3,27,19,1 ,b3 ,i; fun(3,4,a,b); for(i =0;i 3;i + ) printf( “%4d“ ,bi ); prinff(“ /n“ ); void fun(int m,int n,int ar 4 ,int* br) int i,j,x; for(i =0;i m;i + ) x = ari 0 ; for(j = 0;j n;j + ) if(x ari j ) x = ari j; U 【
30、14】 /U=x; (分数:2.00)填空项 1:_63.有下面的程序: #include stdio, h main ( ) enum team my,your=4,his,her=his+10; prinff(“ % d %d %d %d /n“ ,my,your,his,her); 此程序的输出结果是U 【15】 /U。 A) 0 1 2 3 B) 0 4 0 1 0 C) 0 4 5 1 5 D) 1 4 5 1 5(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是U 【16】 /U。 #include stdio, h #include stating, h void
31、fun(char * s,int p,int k) int i; for(i=p;ik-1;i+) si =si+2; main( ) char s = “abedefg“; fun(s,3 ,strlen(s) ); puts(s); (分数:2.00)填空项 1:_65.以下程序运行后的输出结果是U 【17】 /U。 #include stdio, h #include string, h main( ) char ch =“abc“.,x3 4: int i: for(i=0;i3:i +) strcpy(xi ,ch): for(i =0;i3:i+) printf( “% s“ ,
32、printf(“ /n“ ) (分数:2.00)填空项 1:_66.以下程序运行后输出结果是U 【18】 /U。 #include stdio, h void swap(int x.int y) int t; t = x;x = y;y = t: printf( “% d % d “,x,y); main ( ) iht a=3,b=4: swap(a,b); prinff( “% d % d“ ,a,b); (分数:2.00)填空项 1:_67.以下程序运行后的输出结果是U 【19】 /U。 #include stdio, h main( ) char c1 ,c2; for( el = 0
33、, c2 =9; e1c2; c1 + + , c2 - ) printf(“ %c%c“, c1, c2 ); printf(“/n“ ); (分数:2.00)填空项 1:_68.以下程序运行后输出结果是U 【20】 /U。 #include stdio, h main( ) int a,b,c; a=10; b:20; c=(a%b1) (a/b1); printf(“%d %d %d/n“,a,b,c); (分数:2.00)填空项 1:_二级 C语言笔试 305答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.有以下程序: #incl
34、ude stdio.h main( ) int a,b,d =25; a = d/10%9;b = a printf(“% d,% d/n“ ,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.6,1B.2,1 C.6,0D.2,0解析:解析 “/”表示整除,“%”表示求余。程序中表达式 a=d/10%9的值为 25/10%9=2,则 b=a if(i + = 1 程序运行后的输出结果是( )。(分数:1.00)A.123B.234C.223D.233 解析:解析 判断 i+=114,15,16,i,j; for(i =0;i4;i + ) for(j=0;j=i;j+)prin
35、tf(“%4c“,“); for(j=_;j4;j + )printf( “%4d“ ,humi j ); printf(“ /n“ ); 若要按以下形式输出数组右上半三角; 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是( )。(分数:1.00)A.i-1B.i C.i+1D.4-i解析:解析 本程序为二重循环,外循环控制输出数据的行数,内循环控制输出数据的列数。本题需要输出 4行 4列,外层循环语句 for(i=0;i4;i+)控制输出 4行,内层的第一条 for循环控制每行输出的空格数,第二条 for循环用于控制每行的数字输出,由于每一行的数字个数比前一行少 1
36、个,所以内层的第二条 for循环每次循环的次数需要递减 1,那么 j的初始值应该递增,因为第一行输出的是 4个数,所以空格中应填 i。4.以下不能定义为用户标识符的是( )。(分数:1.00)A.MainB._0C._intD.sizeof 解析:解析 C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线,标识符名不能与关键字重名。选项 A)中 Main与主函数名 main不同,所以选项 D)是非法的标识符。5.有以下程序: #include stdio.hmain( ) int m =12,n=34; printf( “% d% d“ ,m+ , +n);
37、 printf(“% d% d /n“ ,n + , +m); 程序运行后的输出结果是( )。(分数:1.00)A.12353514 B.12353513C.12343514D.12343513解析:解析 程序执行 printf(“%d%d“,m+,+n);后,输出的是 m和 n+1的值 1235,然后 m+1=13,再执行 printf(“%d%d/n“,n+,+m);输出 n和 m+1的值 3514,之后 n+1=36。这里要注意的是 m+和+m的区别:m+是先输出 m的值,再执行 m+;+m 是先执行 +m,再输出 m的值。6.有以下程序: #include stdio.h #defin
38、e N 20 fun(int a ,int n,int m) int i,j; for(i=m;i :n;i-) ai+1 =ai; main( ) int i,aN. = 11,2.3,4,5,6,7,8,9,10; fun( a,2,9) for(i =0;i5;i + ) printf(“% d“ ,ai );程序运行后的输出结果是( )。(分数:1.00)A.10234B.12344C.12334 D.12234解析:解析 本题函数 fun的作用是将指定的数组元素(下标从 nm)向后移一位。调用函数 fun(a,2,9)将 a2到 a9的各元素依次向后移一位,最后 a数组中各元素的值分
39、别为 1,2,3, 3,4,5,6,7,8,9,10,程序输出数组的前 5个元素:12334。7.有以下程序: #include stdio.h main( ) char s =“159“ , * p; p=s; printf( “% c“, * p + + ); printf(“%“, * p+);程序运行后的输出结果是( )。(分数:1.00)A.15 B.16C.12D.59解析:解析 语句 p=s将指针变量 p指向字符数组 s,第一次输出时,由于+和*为同一优先级,而结合方向为自右向左,所以,*p+相于*(p+)。但又因为“+”在 p的右侧,所以,先输出*p,得到 s0的值,然后 P+
40、,P 指向 s1,故第二次输出时,输出 s1的值,所以输出结果为 15。8.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:1.00)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计解析:解析 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期,它可以分为软件定义、软件开发及软件运行维护三个阶段。9.下图所示二叉树的中序遍历结果为( )。 (分数:1.00)A.ABCDEFB.DBEAFC C.ABDECFD.DEBFCA解析:解析 中序遍历首先遍历左子树,然后访问根结点,最后遍历
41、右子树,并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。10.以下对结构体类型变量 td的定义中,错误的是( )。(分数:1.00)A.typcdef struct aa int n; float m; AA; AA td;B.struct aa int n; float m; struct aa td;C.struct int n; float m; aa; struct aa td; D.struct int n; float m; td;解析:解析 选项 A)中 typedef的作用是声明一个新的类型名 AA代替已有的结构体类型名 struetaa,然后用 AA
42、定义结构体类型变量 td;选项 B)直接用结构体类型名 structaa定义结构体类型变量 td;选项C)中的 aa本身就为结构体变量名,所以不能再用它来定义结构体变量,该项错误;选项 D)省去了结构体名,直接将 td定义为结构体变量,正确。11.以下选项中可作为 C语言合法常量的是( )。(分数:1.00)A.-80 B.-080C.-8e1.0D.-80.0e解析:解析 C 语言的常量分为整型常量、实型常量和字符型常量。本题中包含整型常量和实型常量。选项 B)以 0打头,应该属于八进制整数,而八进制整数只能用数字 07 表示,所以选项 B)不合法;选项C)和 D)从形式上看属于实型常量,但
43、对于指数形式的实型常量,e(或 E)之前必须有数字,且 e后面的指数必须为整数,所以选项 C)和 D)都不合法;选项 A)属于实型常量中正确的十进制小数形式。12.有以下程序: #include stdio.hpoint ( char * p) p + = 3; main( ) char b4 = a,b,c,d , *p=b; point(p); printf( “% c /n“ , * p);(分数:1.00)A.a B.bC.cD.d解析:解析 C 函数的参数传递方式采用按值传递,不能通过调用函数改变形参指针本身的值,只能改变指针所指变量的值。调用 point函数时,将实参指针 p的值(
44、b 数组的首地址)传给了形参指针 P,P+=3运算使形参指针指向字符 d,但并不能改变 main函数中 p的值,所以本题正确答案应该是选项 A)。13.有以下程序:#include stdio.h#include string.hmain( ) char a 7 = “a0 /0a0 /0“; int i,j; i = sizeof(a); j = strlen(a); printf(“ % d %d /n“ ,i,j); 程序运行后的输出结果是( )。(分数:1.00)A.22B.76C.72 D.62解析:解析 C 语言中以,/0作为字符串的结束符,且 strlen函数计算的是,/0,字符
45、前的所有字符的个数,故本题中 strlen(a)应为 2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof 运算符是计算变量或数组所分配到的内存空间的大小,所以本题的 sizeof(a)为7。14.设有如下说明: typedef struet ST long a;int b;char c2; NEW;则下面叙述中正确的是( )。(分数:1.00)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型 D.NEW是一个结构体变量解析:解析 typedef 关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用 typedef进行定义的话,则 struct ST为结构体类型,现在用 typedef定义后,相当于用 NEW代表了 struct ST这一结构体类型,故 NEW为结构体类型。15.在计算机中,算法是指( )。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述 D.排序方法解析:解析 计算机算法是指解题方案的准确而完整的描述,它具有的基本特征有:可行性、确定性、有穷性和拥有足够的情报。16.有以下程序:#include stdio.hvoid f(int * x,int * y) int t; t= *x; *x= *y;