1、二级 C语言笔试-297 及答案解析(总分:82.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.设有以下定义和语句:int a3 2=1,2,3,4,5,6, * p3;p0 =a1;则(P0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.s11D.a122.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_3.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请填空。#include stdlib.hstuct nodech
2、ar data; struet node * next; ;stntct node * CreatList(char * s)struet node *h,*p,*q;h = (struct node * ) malloc(sizeof(struct node) );p=q=h;while( * s! =/0)p = (struct node *) malloc ( sizeof(struct node) );p - data = ( )q- next=p;q=p;a+;p- next =/0;return h;main( )char str = “link list“;struet node
3、 * head;head = CreatList(str);(分数:1.00)A.*sB.sC.*s+D.(*s)+4.下列条件语句中,功能与其他语句不同的是( )。(分数:1.00)A.if(a) printf(“%d /n“ ,x); else printf(“% d /n“ ,y);B.if(a =0) printf( “% d /n“ ,y); else printf( “% d /n“ ,x);C.if (a! =0) printf(“%d /n“,x); else printf(“%d /n“,y); ,D.if(a=O) printf(“%d /n“,x); else print
4、f(“%d /n“,y);5.以下能正确定义二维数组的是( )。(分数:1.00)A.int a3;B.int a3 =2*3;C.int a3 =;D.int a23 =1,2,3,4:6.下列对于线性链表的描述中正确的是( )。(分数:1.00)A.存储空间不一定连续,且各元素的存储顺序是任意的B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的7.有以下程序:#include stdio.hmain( )chars =“Yes/n/No“,*ps=s;puts(ps +4); *
5、 (pa +4) =0;puts(s);程序运行后的输出结果是( )。(分数:1.00)A.n/NoYes/NoB./NoYesC./NOYes/NoD.n/NoYes8.有以下程序:#include stdio, hmain( )int m =0256,n =256;printf( “% o % o /n“ ,m,n);程序运行后的输出结果是( ) 。(分数:1.00)A.0256 0400B.0256 256C.256 400D.400 4009.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|xy|10 的是( )。(分数:1.00)A.abs(x-y)10B.x-y -10p
6、=e;能够正确引用 c数组元素的是( )。(分数:1.00)A.p+1B.*(p+3)C.*(p+1)+3D.*(p0+2)11.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是( )。(分数:1.00)A.c1c2B.c1c2C.c2D.c1|c212.有如下程序:#include stdio.hmain ( )FILE* fpl;fp1 = fopen(“f1. txt“ ,“w“);fpfinff( fp1 ,“ abc“ );fclose ( fp1 );若文本文件 f1.txt中原有内容为:good,则运行以上程序后文件 f1.txt中的内容为( )。(分数:1
7、.00)A.goodabcB.abcdC.abcD.abegood13.有以下程序:#include stdio, hmain ( )int a =666,b =888;printf( “%d /n“, a,b);程序运行后的输出结果是( )。(分数:1.00)A.错误信息,B.666C.888D.666,88814.有以下程序:#include stdio. hmain( )int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(“%d%d/n“,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.运行后
8、报错觉B.6 6C.6 11D.5 1015.数据的存储结构是指( )。(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示16.有以下程序:#include stdio. hmain ( )inti=0.s=0;for(;)if( i = = 3 i = = 5 ) continue;if (i =6) break;i+; s+ =i;printf(“ % d /n“ ,s);程序运行后的输出结果是( )。(分数:1.00)A.10B.13C.21D.程序进入列循环17.设有定义语句:int x6 = 2,4,6,
9、8,5,7 , * p=x,i;要求依次输出 x数组 6个元素中的值,不能完成此操作的语句是( )。(分数:1.00)A.for(i=0; i 6;i+) printf(“%2d“,* (p+);B.for(i =0;i 6;i + ) printf( “%2d“ , * (p +i);C.for(i =0;i 6;i + ) printf(“ %2d“ , * p + );D.for(i =0;i 6;i + ) printf(“%2d“ ,( * p) + );18.有以下程序:#include stdio.hmain( )char a,b,e,d;seanf(“% e,% e,% d,%
10、 d“ ,printf(“% c,% c,% e,% c /n“ ,a,b,c,d);若运行时从键盘上输入:6,5,65,66 回车,则输出结果是( )。(分数:1.00)A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,619.结构化程序由三种基本结构组成,三种基本结构组成的算法( )。(分数:1.00)A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务20.s1和 s2已正确确定义并分别指向两个字符串。若要求:当 s1所指字符串大于 s2所指字符串时,执行语句 S;则以下选项中正确的是( )。(分数:1.00)
11、A.if(s1 s2) S;B.if(strcmp(s1,s2) S;C.if(strcmp(s2,s1)0) S;D.if(stremp(s1,s2)0) S;21.有以下程序: #include stdio. hmain ( )char a :a,b;printf( “% c,“ , + +(分数:1.00)A.;for(i =0;i 3 ;i + )switch (i)case 0: printf(“ % d“ ,i);case 2: printf(“ % d“ , i);default: printf( “% d“ , i);程序运行后的输出结果是( )。(分数:1.00)A.0221
12、11B.021021C.000122D.01224.在函数调用过程中,如果函数 funA调用了函数 funB,函数 funB又调用了函数 funA,则 ( )。(分数:1.00)A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用25.有以下程序:#include stdio, hvoid fun(iht * a,int i,int j)int t;if(i j)t=ai;ai =aj ;aj=t;i+;j-;fun(a,i,j);main ( )int x : 2,6,1,8 ,i;fun(x,0,3);for( i=0;i 4;i +
13、) printf( “%2d“ ,xi );printf(“ /n“);(分数:1.00)A.1268B.8621C.8162D.861226.有以下程序:#include stdio. hmain( )unsigned int a;int b=-1;a=b;printf(“ % u“,(分数:1.00)A.;程序运行后的输出结果是( )27.已有定义:int i,a10,*p;则合法的赋值语句是( )。(分数:1.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;28.下列描述中正确的是( )。(分数:1.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是
14、逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合29.对于长度为 n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ( )。(分数:1.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/230.有以下程序:#include stdio. h main ( )char s = “ABCD“, * p;for(p=s+1;ps+4;p+) pfintf(“ % s /n“ ,p);(分数:1.00)A.ABCDBCDCDDB.ABCC.BCDD.BCDCDD31.有以下程序:#include stdio. h main( )eh
15、ar str 10 = “China“ ,“ Beijing“ , * p = stro;printf( “% s /n“, p + 10);程序运行后的输出结果是( )。(分数:1.00)A.ChinaB.BeijingC.ngD.ing32.有以下程序:#include stdio. h main( )int m =3,n =4,x;x= -m+;x=x+8/+n;prinff(“ % d /n“ ,x);程序运行后的输出结果是( )。(分数:1.00)A.3B.5C.-1D.-233.有以下程序:#include stdio.hmain( )int a=7,b=8,* p,*q, *r;
16、p=q=r=p; p=q;q=r;printf(“ % d,% d,% d,% d /n“, * p, * q.a,b);程序运行后的输出结果是( )。(分数:1.00)A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,734.数据独立性是数据库技术的重要特点之一,所谓数据独立性是指( )。(分数:1.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对35.有以下程序:#include stdio. hint f(int(分数:1.00)A.36.线性表 L=(a1,a2,a3,ai,an),下列说法
17、正确的是( )。(分数:1.00)A.每个元素都有一个直接前件和直接后件B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个旦只有一个直接前件和直接后件37.有定义语句doubld a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。(分数:1.00)A.a=a+b=b+B.w%(int) a+b)C.(c+w)%(int)aD.w=a=b;38.与十进制数 200等值的十六进制数为( );(分数:1.00)A.A8B.A4C.C8D.C439.以下叙述中正确的是( )。(分数:1
18、.00)A.局部变量说明为 static存储类,其生存期将得到延长B.全局变量说明为 static存储类,其作用域将被扩大C.任何存储类的变量在未赋初值时,其值都是不确定的D.形参可以使用的存储类说明符与局部变量完全相同40.在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )。(分数:1.00)A.63B.64C.6D.741.以下定义语句中正确的是( )。(分数:1.00)A.char a=A b=B;B.float a=b=10.0;C.int a=10, *b= char num8 ;struct student stu 3 = 20, “200401“ , 21
19、, “200402“ , 19, “200403“ ;stract student * p = stu;以下选项中引用结构体变量成员的表达错误的是( )。(分数:1.00)A.(p+) -numB.p- numC.( *p).numD.stu3.age43.程序中对 fun函数有如下说明:void *fun();此说明的含义是( )。(分数:1.00)A.fun函数无返回值B.fun函数的返回值可以是任意的数据类型C.fun函数的返回值是无值型的指针类型D.指针 fun指向一个函数,该函数无返回值44.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结
20、点中,请为下划线处选择正确的选项。#include stdlib. h stuct nodechar data; struct node * next; ;( ) CreatList(char * s)struet node * h, * p, * q;h = (struet node * ) maloc(sizeof(struct node) );p=q=h;while( * s! =/0)p = ( struct node * ) maloc ( sizeof( struct node) );p- data= *s; q- next=p; q=p;s+;p- next =/0;return
21、 hmain( )char str = “link list“;struet node * head;head = CreatList (str);(分数:1.00)A.char *B.struet nodeC.struct node *D.char45.有以下程序:#include stdio. hmain ( )int x = 1,3,5,7,2,4,6,0 ,i,j,k;for(i =0;i3;i + )for (j =2;j = i;j )if( xj + 1 xj ) k = xj ;xj = xj + 1 ;xj + 1 = k; for (i =0;i3;i+)for(j =4;
22、j 7-i;j +)if(xj xj+1) k=xj;xj =xj+1;xj+1 =k;for (i=0;i8;i +) printf(“%d“ ,xi);prinff(“/n“ );程序运行后的输出结果是( )。(分数:1.00)A.75310246B.01234567C.76310462D.1357024646.有以下程序:#include stdio. h main ( )int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(“%d“,d+ +1);else printf( “% d“, + + d + 1 );printf( “% d /n“ ,d);程序运行后
23、的输出结果是( )。(分数:1.00)A.2B.3C.43D.4447.若变量已正确定义,要求程序段完成求 5! 的计算,不能完成此操作的程序段是( )。(分数:1.00)A.for(i=1,p=1;i=5;i+) p* =i;B.for(i=1;i=5;i+) p=1; p* =i;C.i=1;p=1;while(i=5)p* =i; i+;D.i=1;p=1;dop* =i; i+; while(i=5);48.下列关于栈的描述中错误的是( )。(分数:1.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针49.为了使模块尽可能
24、独立,要求( )。(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强50.下列对于软件测试的描述中正确的是( )。(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则二、填空题(总题数:16,分数:32.00)51.软件的需求分析阶段的工作,可以概括为四个方面: 【1】 、需求分析
25、、编写需求规格说明书和需求评审。(分数:2.00)填空项 1:_52.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、 【2】 遍历和后序遍历。(分数:2.00)填空项 1:_53.数据字典是各类数据描述的集合,它通常包括五个部分,即数据项、数据结构、数据流、 【3】 和处理过程。(分数:2.00)填空项 1:_54.数据结构包括数据的逻辑结构、数据的 【4】 以及对数据的操作运算。(分数:2.00)填空项 1:_55.如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“工人”与实体“设备”之间存在 【5】 联系。(分数:2.00)填空项 1:_56.
26、以下程序中,函数 SumColumMin的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值,和值通过形参传回主函数输出。请填空,#include stdio.h#define M 2#define N 4void SumColumMin ( int a M N ,int* sum)int i,j,k,s=0;for(i =0;iN;i + )k=O;for(j=1 ;j M;j + )if(aki aji) k=j;s+: 【6】 ;【7】 =s;main( )int xM N=3,2,5,1,4,1,8,3,s;SumColumMin( 【8】 );printf( “%d
27、 /n“ ,s);(分数:2.00)填空项 1:_57.以下程序运行后的输出结果是 【9】 #include stdio.hmain ( )char a =“123456789“, *p;int i =0;p=a;while( * p)if(i%2 =0) *p=*;p+;i+;puts(a);(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是 【10】 。 #include stdio.hmain( )int p7 =11,13,14,15,16,17,18;int i=0,j=0;while(i7 prinff( “% d /n“ ,j);(分数:2.00)填空项 1:_59
28、.以下程序中,for 循环体执行的次数是 【11】 。#define N 2#define M N + 1#define K M + 1 * M/2main( )int i;for(i=1;i K;i+) (分数:2.00)填空项 1:_60.以下程序运行后的输出结果是 【12】 。#include stdio.hmain( )int x=1,y=0,a=0,b=0;switch ( x )case 1:switch(y)case 0:a +; break;case 1 :b +; break;case 2:a + ;b +*; break;printf(“%d %d/n“,a,b);(分数:
29、2.00)填空项 1:_61.以下程序运行后的输出结果是 【13】 。#include stdio.hmain( )int a,b,c;a =25;b =025;e =0x25;prinff(“%d %d %d/n“,a,h,c);(分数:2.00)填空项 1:_62.以下程序运行后的输出结果是 【14】 。#include stdio.hmain( )int a4 4= 1,2,3,4, 5678,11121314,15161718 ;int i=0,j =0,s =0;while(i + 4)if(i =2 i =4) continue;j=0;do s+ = aij; j+; while
30、(j4);pdnff(“ % d/n“ ,s);(分数:2.00)填空项 1:_63.以下程序段的输出结果是 【15】 。int i =9;prinff( “% o /n“ ,i);(分数:2.00)填空项 1:_64.以下程序通过函数 SunFun()调用 F(x),x 的值从 0到 10,这里 F(x)=x2+1,由 F函数实现,请填空。#include stdio. hint SunFun(int);int F(int);main ( )pfintf( “The sum = % d /n“ ,SunFun(10) ); SunFun( int n)int x,s =0;for(x=0;
31、x=n; x+) s+ =F( 【16】 );return s;F( int x)return ( 【17】 );(分数:2.00)填空项 1:_65.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。#include stdio, hmain( )int i, a 20, sum, count;sum = count = 0 ;for(i=0;i20;i+)scanf(“%d“, 【18】 );for(i=0;i20;i +)if(ai 0)count + +;sum+ = 【19】 ;prinff( “sum = % d, count = % d / n“, su
32、m, count );(分数:2.00)填空项 1:_66.以下程序运行后的输出结果是 【20】 。#include stdio, hmain ( )char a = “Language“, b : “Programe“;char * pl, * p2; int k;p1=a;p2=b;for(k=0;k=7;k+)if( * (p1 +k) = * (p2+k) printf(“% c“, * (pi +k);(分数:2.00)填空项 1:_二级 C语言笔试-297 答案解析(总分:82.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.设有以下定义和语句:int
33、a3 2=1,2,3,4,5,6, * p3;p0 =a1;则(P0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.s11 D.a12解析:解析 *p3是指针数组,它由 3个指向整型数据的指针元素组成,p0=a1是将 a数组第一行的首地址赋给第 0个指针元素,p0+1 表示 a1+1即 a11的地址,所以 *(p0+1)表示 a11。2.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_ 解析:解析 标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。3.以下程序的功能是:建立一
34、个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请填空。#include stdlib.hstuct nodechar data; struet node * next; ;stntct node * CreatList(char * s)struet node *h,*p,*q;h = (struct node * ) malloc(sizeof(struct node) );p=q=h;while( * s! =/0)p = (struct node *) malloc ( sizeof(struct node) );p - data = ( )q- next=p
35、;q=p;a+;p- next =/0;return h;main( )char str = “link list“;struet node * head;head = CreatList(str);(分数:1.00)A.*s B.sC.*s+D.(*s)+解析:解析 本题要求建立一个 stmct node类型的数据链表,函数 CreatList将字符串“link list“的首地址传给指针变量 s,可以推断建立的链表一定与“link list“,有关,由 CreatList(char *s)函数中所定义的变量及其他语句可知,h,p,q 用于建立的链表,h 表示头指针,p 用于记录开辟的新结点
36、,而q用作将新结点与已建立的链表相连的中间变量,所建立链表各个结点的 data依次存放的是”link list“,中的各个字符,所以应填空*s。4.下列条件语句中,功能与其他语句不同的是( )。(分数:1.00)A.if(a) printf(“%d /n“ ,x); else printf(“% d /n“ ,y);B.if(a =0) printf( “% d /n“ ,y); else printf( “% d /n“ ,x);C.if (a! =0) printf(“%d /n“,x); else printf(“%d /n“,y); ,D.if(a=O) printf(“%d /n“,
37、x); else printf(“%d /n“,y); 解析:解析 选项 A)的语句表示若 a非 0,则输出 x的值,否则输出 y的值;选项 B)的语句表示如果 a等于 o,则输出 y的值,否则输出 x的值,与选项 A)等价;选项 C)的语句表示如果 a不等于 0,则输出x,否则输出 y,与选项 A)、B)相同;选项 D)的语句表示如果 a为 0,则输出 x,否则输出 y,与前三个选项都不同。5.以下能正确定义二维数组的是( )。(分数:1.00)A.int a3; B.int a3 =2*3;C.int a3 =;D.int a23 =1,2,3,4:解析:解析 本题考查二维数组的定义。选项
38、 B)不符合二维数组的定义规范;选项 C)企图给数组赋空值,错误;选项 D)定义的 a2)3说明 a是一个 2行 3列的数组,而初始化却赋了 3行,所以选项 D)错误。6.下列对于线性链表的描述中正确的是( )。(分数:1.00)A.存储空间不一定连续,且各元素的存储顺序是任意的 B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的解析:解析 在链式存储结构中,存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域确定的。7.有以
39、下程序:#include stdio.hmain( )chars =“Yes/n/No“,*ps=s;puts(ps +4); * (pa +4) =0;puts(s);程序运行后的输出结果是( )。(分数:1.00)A.n/NoYes/NoB./NoYes C./NOYes/NoD.n/NoYes解析:解析 用 puts函数输出的字符串中可以包含转义字符,遇到转义字符,自动跳过去。例如本题中ps+4指的是/的地址,并不是/n的地址,所以 puts(ps+4)输出的是/NO。C规定以字符/0,作为字符串结束标志,以便系统据此判断字符串是否结束。本题执行 *(Ps+4)=0 之后,再执行 put
40、s(s),就相当于输出字符串 Yes后遇到结束标志。8.有以下程序:#include stdio, hmain( )int m =0256,n =256;printf( “% o % o /n“ ,m,n);程序运行后的输出结果是( ) 。(分数:1.00)A.0256 0400B.0256 256C.256 400 D.400 400解析:解析 o 格式符是以八进制形式输出整数。此题 m已是八进制数(256 前面的 0表示此数是八进制数),n 是十进制数,所以输出时,直接输出 m的值,n 的值需要转换成八进制数 400后再输出。9.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|x
41、y|10 的是( )。(分数:1.00)A.abs(x-y)10B.x-y -10p=e;能够正确引用 c数组元素的是( )。(分数:1.00)A.p+1B.*(p+3)C.*(p+1)+3D.*(p0+2) 解析:解析 (*p)5中 p是一个行指针,指向一个包含 5个元素的一维数组,p 的值是该一维数组的首地址。当用行指针访问二维数组时,行指针每增加 1,表示指针指向二维数组的下一行,此题中的 p+i将指向数组的第 i行。选项 A)的意思是指向数组 c的第 1行,不是引用 c数组的元素;选项 B)中 p+3是指向数组元素的第 3行,。(P+3)是指第 3行第 0个元素的地址;选项 C)可由对
42、选项 A)、选项 B)的解释知,它指的是第 1行第 3列元素的地址;选项 D)中 p0 +2是指第 0行第 2列元素的地址,再加个*就表示第0行第 2列的元素,即 c02。11.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是( )。(分数:1.00)A.c1c2 B.c1c2C.c2D.c1|c2解析:解析 按位异或“”运算,是当对应位上的二进制数值相同时结果为 0,否则为 1。因为 c1, c2的值相同,所以异或的结果为 0,选项 A)正确。按位与“fp1 = fopen(“f1. txt“ ,“w“);fpfinff( fp1 ,“ abc“ );fclose (
43、fp1 );若文本文件 f1.txt中原有内容为:good,则运行以上程序后文件 f1.txt中的内容为( )。(分数:1.00)A.goodabcB.abcdC.abc D.abegood解析:解析 执行语句 fp1=fopen(“f1.txt“,“w“);以“只写”方式打开了一个名为 f1.txt的文件,执行语句 fPrintf(fp1,“abc“,);向该文件写数据时,如果文件 f1.txt不存在,则新建一个 f1.txt文件;如果 f1.txt已存在,则在打开该文件时重写文件内容。所以执行 fprintf(fp1,“abc“);时, f1.txt中原有内容 good被删除,而字符中”a
44、bc”被输出到 fpl指向的文件 f1.txt中。13.有以下程序:#include stdio, hmain ( )int a =666,b =888;printf( “%d /n“, a,b);程序运行后的输出结果是( )。(分数:1.00)A.错误信息,B.666 C.888D.666,888解析:解析 在 printf函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。14.有以下程序:#include stdio. hmain( )int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(“%d%
45、d/n“,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.运行后报错觉 B.6 6C.6 11D.5 10解析:解析 程序中将指针 q赋予 NULL,即指向了空地址,而对空地址所对应的内容赋值*q =*(p+5)虽然可以输出结果 6 11,但最后是会报错的,即输出提示 Null pointer assignment。15.数据的存储结构是指( )。(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示 解析:解析 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。16
46、.有以下程序:#include stdio. hmain ( )inti=0.s=0;for(;)if( i = = 3 i = = 5 ) continue;if (i =6) break;i+; s+ =i;printf(“ % d /n“ ,s);程序运行后的输出结果是( )。(分数:1.00)A.10B.13C.21D.程序进入列循环 解析:解析 程序第 1次执行 for循环时,i=0,两条 if语句中的表达式都不成立,执行 i+;s+ =i;此时 i为 1,s 为 1第 2次循环,两条 if语句中的表达式也不成立,执行 i+,s+=i,此时 i为 2,s 为3;当 i=3时,执行 c
47、ontinue,结束本轮循环,不执行 i+;继续执行下一轮循环,这样一来 i值始终为 3,继续 continue,无终止条件,进入死循环。17.设有定义语句:int x6 = 2,4,6,8,5,7 , * p=x,i;要求依次输出 x数组 6个元素中的值,不能完成此操作的语句是( )。(分数:1.00)A.for(i=0; i 6;i+) printf(“%2d“,* (p+);B.for(i =0;i 6;i + ) printf( “%2d“ , * (p +i);C.for(i =0;i 6;i + ) printf(“ %2d“ , * p + );D.for(i =0;i 6;i + ) printf(“%2d“ ,( * p) + ); 解析:解析 *p=x 的作用