1、二级 C 语言笔试-184 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.以下与函数 fseek (fp, OL, SEEK_SET)有相同作用的是( )。(分数:1.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)2.有以下程序:#include stdio. hmain( )int a = 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
2、,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,3.有以下程序:#include stdio.h#include string.hmain( )char a 7 = “a0 /0a0 /0“;int i,j;i = sizeof((分数:1.00)A.;4.用树形结构来表示实体之间联系的模型称为( )。(分数:1.00)A.关系模型B.层次模型C.网状模型D.数据模型5.有以下程序:#include stdio.hmain( )int num44=1,2,3,4,5,6,7,8,9,10,1
3、1,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 46 7 811 1216则在程序下划线处应填入的是( )。(分数:1.00)A.i-1B.iC.i+1D.4-i6.有以下程序:#include stdio.hmain( )int a,b,d =25;a = d/10%9;b = aprintf(“% d,% d/n“ ,a,b);程序运行后的输出结果
4、是( )。(分数:1.00)A.6,1B.2,1C.6,0D.2,07.有以下程序:#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,
5、6,7,8,D.8,7,6,5,4,3,2,1,8.以下叙述中正确的是( )。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间9.以下叙述中错误的是( )。(分数:1.00)A.对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行过程中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数10.下列叙述中,不属于软件需求规格说明书的作用的是( )。
6、(分数:1.00)A.便于用户、开发人员相互理解和交流B.反映用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析11.有以下结构体说明和变量定义,相应的链表如图所示:(分数:1.00)A.p- next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next12.有以下程序:#include stdio.hmain( )int m,n,p;seanf( “m = % dn = % dp = % d“, 若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456, p 中的值为 789
7、,则下列选项中正确的输入是( )。(分数:1.00)A.m = 123n =456p =789B.m = 123 n =456 p =789C.m= 123,n =456,p =789D.123 456 78913.已有定义:chara=“xyz“,b:x,y,z;以下叙述中正确的是( )。(分数:1.00)A.数组 a 和 b 的长度相同B.a 数组长度小于 b 数组长度C.a 数组长度大于 b 数组长度D.上述说法都不对14.有以下程序:#include stdio.hmain( )int a=1,b;for(b =1;b =10;b+)if(a =8) break;if(a%2 = 1)
8、 a + =5;continue;a- =3;printf( “% d /n“ ,b);程序运行后的输出结果( )。(分数:1.00)A.3B.4C.5D.615.以下选项中可作为 C 语言合法常量的是( )。(分数:1.00)A.-80B.-080C.-8e1.0D.-80.0e16.若整型变量 a,b,c,d 中的值依次为:1,4,3,2 则条件表达式 ab? a:cd? c:d 的值是 ( )。(分数:1.00)A.1B.2C.3D.417.有以下程序:#includestdio.hvoid WriteStr(char *fn, char *sir)FILE * fP;fP=fopen(
9、fn,“w“);fput6(str,fp);fclose(fp);main()WriteStr(“t1.dar“,“start“);WrlteStr(“t1dat“,“end“);程序运行后,文件 t1.dat 中的内容是( )。(分数:1.00)A.startB.endC.startendD.endrt18.单个用户使用的数据视图的描述称为( )。(分数:1.00)A.外模式B.概念模式C.内模式D.存储模式19.有以下程序:#include stdio.hprt(int * m,int n)int i;for(i =0;in;i + ) mi +;main( )int a = 1,2,3,
10、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,6,C.3,4,5,6,7,D.2,3,4,5,120.有以下程序:#include stdio.hmain( )int a32=0 ,( *ptr)2,i,j;for(i=0;i2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+;for(i =0;i3;i + )for(j =0;j2;j + ) prinff( “%2d“ ,ai j );prinff(“ /n“ );
11、若运行时输入:1 2 3 回车,则输出结果是( )。(分数:1.00)A.产生错误信息B.102000C.123000D.10203021.有定义语句:int b;char c10 ;则正确的输入语句是( )。(分数:1.00)A.seanf(“%d%s“ ,B.scanf(“%d%s“,C.seanf(“%d%s“,b,c);D.scanf(“%d%s“,b,22.以下不能定义为用户标识符的是( )。(分数:1.00)A.MainB._0C._intD.sizeof23.有以下程序:#include stdio.hmain( )char s =“159“ , * p;p=s;printf(
12、“% c“, * p + + );printf(“%“, * p+);程序运行后的输出结果是( )。(分数:1.00)A.15B.16C.12D.5924.有以下函数:fun(char * a,char *b)while(*a! =/0)b+;return( *a-*b);该函数的功能是( )。(分数:1.00)A.将 b 所指字符串连接到 a 所指字符串中B.计算 a 和 b 所指字符串的长度之差C.将 b 所指字符串连接到 a 所指字符串后面D.比较 a 和 b 所指字符串的大小25.有以下程序:#include stdio.h#define N 20fun(int a ,int n,in
13、t 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.12334D.1223426.有以下程序:#include stdio.h#define P 3void F(int x) return(P* x* x); tmain( )printf(“ % d /n“ ,F(3 + 5) ); 程序运行后的输出结果是( )。(
14、分数:1.00)A.192B.29C.25D.编译出错27.有以下程序:#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 /n“ ,j);程序运行后的输出结果是( )。(分数:1.00)A.42B.45C.56D.6028.按条件 f 对关系 R 进行选择,其关系代数表达式为( )。(分数:1.00)A.R|X|RB.C.f(R)D.f(R)29.有以下程序:#include stdio.hmain( )int i=1,j =2,k =3;if
15、(i + = 1程序运行后的输出结果是( )。(分数:1.00)A.123B.234C.223D.23330.有以下程序:#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.1234351331.以下选项中不能作为合法常量的是( )。(分数:1.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e032.算法具有五
16、个特性,以下选项中不属于算法特性的是( )。(分数:1.00)A.有穷性B.简洁性C.可行性D.确定性33.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题,从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考34.有以下程序:#include stdio.hmain ( )int a3 3 , *p,i;p= i+)pi=i:for(i=0; i3;i+)Printf(“%d“,a1i);程序运行后的输出结果是(
17、 )。(分数:1.00)A.012B.123C.234D.34535.数字字符0的 ASCII 值为 48, 若有以下程序:#include stdio.hmain( )char a=1,b =2;printf( “% c,“,b + + );printf(“ % d /n“ ,b -(分数:1.00)A.;char b; double c; data;以下叙述中错误的是( )。(分数:1.00)A.data 的每个成员起始地址都相同B.变量 data 所占的内存字节数与成员 c 所占字节数相等C.程序段:data.a=5; printf(“%f/n“,data.c);输出结果为 5.0000
18、00D.data 可以作为函数的实参37.在计算机中,算法是指( )。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法38.有以下程序:#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,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,
19、g);程序运行后的输出结果是( )。(分数:1.00)A.4,3,7B.3,4,7C.5,2,7D.2,5,739.有以下程序:#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.d40.下图所示二叉树的中序遍历结果为( )。(分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA41.程序中若有如下说明和定义语句:char fun(char *);main()cha
20、r * s=“one“, a5=0,(* f1)()=fun,ch;以下选项中对函数 fun 的正确调用语句是( )。(分数:1.00)A.(* f1)(a);B.* f1(* s);C.fun( printf( “% d /n“ , e 程序运行后输出结果是( )。(分数:1.00)A.0B.70C.35D.143.以下能正确定义一维数组的选项是( )。(分数:1.00)A.int a5 =0,1,2,3,4,5;B.char a = 0,1,2,3,4,5;C.char a = A,B,C ;D.int a5 = “0123“;44.以下对结构体类型变量 td 的定义中,错误的是( )。(
21、分数:1.00)A.typcdef struct aaint n;float m;AA;AA td;B.struct aaint n;float m;struct aa td;C.structint n;float m;aa;struct aa td;D.structint n;float m;td;45.设有如下说明:typedef struet STlong a;int b;char c2; NEW;则下面叙述中正确的是( )。(分数:1.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型D.NEW 是一个结构体变量46.以下叙述中正确的是( )。(分数:1
22、.00)A.用 C 程序实现的算法必须要有输入和输出操作B.用 C 程序实现的算法可以没有输出但必须要有输入C.用 C 程序实现的算法可以没有输入但必须要有输出D.用 C 程序实现的算法可以既没有输入也没有输出47.在软件工程中,白盒测试法可用于测试程序的内部结构,此方法将程序看做是( )。(分数:1.00)A.循环的集合B.地址的集合C.路径的集合D.目标的集合48.在单链表中,增加头结点的目的是( )。(分数:1.00)A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单键表是线性表的链式存储实现49.软件开发的结构化生命周期方法将软件生命周期划分成( )。(
23、分数:1.00)A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计50.以下语句或语句组中能正确进行字符串赋值的是( )。(分数:1.00)A.ehar 以*sp; * sp = “right!“;B.char s10 ;s = “right!“;C.char s 10; * s = “right !“;D.char * sp = “right !“;二、填空题(总题数:18,分数:36.00)51.某二叉树中度为 2 的结点有 18 个,则该二叉树中有 【1】 个叶子结点。(分数:2.00)填空项 1:_52.在面向对象方
24、法中,类的实例称为 【2】 。(分数:2.00)填空项 1:_53.问题处理方案的正确而完整的描述称为 【3】 。(分数:2.00)填空项 1:_54.在关系数据库中把数据表示成二维表,每一个二维表称为 【4】 。(分数:2.00)填空项 1:_55.诊断和改正程序中错误的工作通常称为 【5】 。(分数:2.00)填空项 1:_56.以下程序运行时,若从键盘输入:10 20 30 回车,输出的结果是 【6】 。#includestdio.hmain()int i=0,j=0,k=0;scanf(“% d%* d%d“, prinff(“% d / n“ , S( i + j) );(分数:2.
25、00)填空项 1:_58.以下程序运行后的输出结果是 【8】 。#include stdio, hmain( )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的 ASCII 代码值为 65,以下程序运行时若从键盘输入:B33 回车,则输出结果是 【9】 。#include stdio.hmain( )char a,b;a = getchar( ) ;seanf( “% d“ ,a=a-A +0;b=b* 2;prinff( “% c %
26、 c /n“ ,a,b);(分数:2.00)填空项 1:_60.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串“yes!”,否则函数返回字符串“no!”,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adsda。请填空。#include stdio, h#include string, hchar * huiwen(char * str)char *p1, * p2; int i,t=0;p1 = str;p2 = 【10】 ;for(i =0;i= strlen(str)/2;i + )if( * pl + ! = * p2 -
27、) t = 1 ;breakif( 【11】 ) return( “yes !“ );else return( “no!“ );main( ) char str50;printf( “Iaput:“ ); scanf(“ % s“, str);printf(“%s /n“, 【12】 );(分数:2.00)填空项 1:_61.以下程序运行后的输出结果是 【13】 #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 +
28、) prinff(“% d% d“ ,i,fun(a) );printf(“ /n“ );(分数:2.00)填空项 1:_62.以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。#include stdio, hvoid 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
29、 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;【14】 =x;(分数:2.00)填空项 1:_63.有下面的程序:#include stdio, hmain ( )enum team my,your=4,his,her=his+10;prinff(“ % d %d %d %d /n“ ,my,your,his,her);此程序的输出结果是 【15】 。 A) 0 1 2 3 B) 0 4 0 1 0 C) 0 4 5 1 5
30、 D) 1 4 5 1 5(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是 【16】 。 #include stdio, h#include stating, hvoid 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.以下程序运行后的输出结果是 【17】 。#include stdio, h#include string, hmain( )char ch =“ab
31、c“.,x3 4: int i:for(i=0;i3:i +) strcpy(xi ,ch):for(i =0;i3:i+) printf( “% s“ ,printf(“ /n“ )(分数:2.00)填空项 1:_66.以下程序运行后输出结果是 【18】 。#include stdio, hvoid 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.以下程序运行后的
32、输出结果是 【19】 。#include stdio, hmain( )char c1 ,c2;for( el = 0, c2 =9; e1c2; c1 + + , c2 - ) printf(“ %c%c“, c1, c2 );printf(“/n“ );(分数:2.00)填空项 1:_68.以下程序运行后输出结果是 【20】 。#include stdio, hmain( )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 语言笔试-184 答案解析(总分:86.00,
33、做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.以下与函数 fseek (fp, OL, SEEK_SET)有相同作用的是( )。(分数:1.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp) 解析:解析 feof 函数的功能是判断文件指针是否已指到了文件末尾,是则返回非零值,否则返回零;ftell 函数的功能是得到流式文件中文件指针的当前位置,用相对于文件开头的位移量来表示;fgetc 函数的功能是从指定文件读人一个字符;rewind 函数的功能是使文件指针重新返回文件的开头。fseek 函数用于改变文件的位置指针,调用形式为
34、:fseek(文件类型指针,位移量,起始点),“起始点”取值 0(SEEK_SET)、1(SEEK_CUR)、2(SEEK_END)分别表示文件开始、文件当前位置、文件末尾。“位移量”是以“起始点”为基点,向前移动的字节数。函数 fseek(fp,OL,SEEK_SET)的作用是将位置指针移到文件头,所以选项 D)正确。2.有以下程序:#include stdio. hmain( )int a = 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,
35、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,解析:解析 C 语言规定数组名代表数组的首地址,所以 for 循环中循环变量 p 的初值即 int i,j;i = sizeof((分数:1.00)A.;解析:解析 C 语言中以,/0作为字符串的结束符,且 strlen 函数计算的是,/0,字符前的所有字符的个数,故本题中 strlen(a)应为 2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof 运算符是计算变量或数组所分配到的内存空间的大小,所以本
36、题的 sizeof(a)为7。4.用树形结构来表示实体之间联系的模型称为( )。(分数:1.00)A.关系模型B.层次模型 C.网状模型D.数据模型解析:解析 层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构等,它们自顶向下、层次分明。5.有以下程序:#include stdio.hmain( )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“ ,
37、humi j );printf(“ /n“ );若要按以下形式输出数组右上半三角;1 2 3 46 7 811 1216则在程序下划线处应填入的是( )。(分数:1.00)A.i-1B.i C.i+1D.4-i解析:解析 本程序为二重循环,外循环控制输出数据的行数,内循环控制输出数据的列数。本题需要输出 4 行 4 列,外层循环语句 for(i=0;i4;i+)控制输出 4 行,内层的第一条 for 循环控制每行输出的空格数,第二条 for 循环用于控制每行的数字输出,由于每一行的数字个数比前一行少 1 个,所以内层的第二条 for 循环每次循环的次数需要递减 1,那么 j 的初始值应该递增,
38、因为第一行输出的是 4 个数,所以空格中应填 i。6.有以下程序:#include stdio.hmain( )int a,b,d =25;a = d/10%9;b = aprintf(“% 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=at= *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,
39、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,7,8,D.8,7,6,5,4,3,2,1, 解析:解析 程序中函数 f 的作用是交换指针变量 x 和 y 所指向的存储单元的值。在 main 函数中,通过P=a;q=B.p-next=p-next-next;C.p-next=r;D.p=q-next 解析:解析 本题定义了结构体类型的指针变量 p,q,r,并各自有两个成员变量 data 和
40、 next, data用于存放数据,next 用于存放下一个结点的地址,所以,要想将 q 所指结点从链表中删除,同时保持链表的连续,必须使 P 结点的 next 指向 r,选项 D)不对。12.有以下程序:#include stdio.hmain( )int m,n,p;seanf( “m = % dn = % dp = % d“, 若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456, p 中的值为 789,则下列选项中正确的输入是( )。(分数:1.00)A.m = 123n =456p =789 B.m = 123 n =456 p =789C.m= 123,n =4
41、56,p =789D.123 456 789解析:解析 程序中的输入函数 scanf(“m=%dn=%dP=%d“,for(b =1;b =10;b+)if(a =8) break;if(a%2 = 1) a + =5;continue;a- =3;printf( “% d /n“ ,b);程序运行后的输出结果( )。(分数:1.00)A.3B.4 C.5D.6解析:解析 本题要注意 break 和 continue 的区别。continue 语句只结束本次循环,继续下一次循环;而 break 语句则是结束整个循环。本题执行过程如下:a=1,b=1:a=8 不成立,a%2=1 成立,执行 a+
42、=5,则 a=6,继续执行下一次循环;a=6,b=2:a=8 不成立,a%2=1 不成立,执行 a-=3,则 a=3,继续执行下一次循环;a=3,b=3:a=8 不成立,a%2=1 成立,执行 a+=5,则 a=8,继续执行下一次循环;a=8,b=4:a=8 成立,结束整个循环,输出 b 的值 4。15.以下选项中可作为 C 语言合法常量的是( )。(分数:1.00)A.-80 B.-080C.-8e1.0D.-80.0e解析:解析 C 语言的常量分为整型常量、实型常量和字符型常量。本题中包含整型常量和实型常量。选项 B)以 0 打头,应该属于八进制整数,而八进制整数只能用数字 07 表示,所
43、以选项 B)不合法;选项C)和 D)从形式上看属于实型常量,但对于指数形式的实型常量,e(或 E)之前必须有数字,且 e 后面的指数必须为整数,所以选项 C)和 D)都不合法;选项 A)属于实型常量中正确的十进制小数形式。16.若整型变量 a,b,c,d 中的值依次为:1,4,3,2 则条件表达式 ab? a:cd? c:d 的值是 ( )。(分数:1.00)A.1 B.2C.3D.4解析:解析 本题先计算 ab 的值,由 a=1,b=4 得 ab 的值为真,所以整个表达式 ab? a:cd?c:d 的值取 a 的值 1。17.有以下程序:#includestdio.hvoid WriteSt
44、r(char *fn, char *sir)FILE * fP;fP=fopen(fn,“w“);fput6(str,fp);fclose(fp);main()WriteStr(“t1.dar“,“start“);WrlteStr(“t1dat“,“end“);程序运行后,文件 t1.dat 中的内容是( )。(分数:1.00)A.startB.end C.startendD.endrt解析:解析 在 main 函数中,两次调用 WriteStr 函数,即两次执行 fp=fopen(fn,“w“);语句,以“写入”方式打开 fn 所指向的同一文件,当第二次打开文件时,文件指针指向文件头,写入的
45、数据将覆盖文件中原有的数据。fputs(str,fp)函数的功能是将字符指针*str 的值输出到 fp 所指向的文件中,故本题中 t1.dat 的内容为 end。18.单个用户使用的数据视图的描述称为( )。(分数:1.00)A.外模式 B.概念模式C.内模式D.存储模式解析:解析 选项 A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。19.有以下程序:#include s
46、tdio.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,6, C.3,4,5,6,7,D.2,3,4,5,1解析:解析 prt(a,5);用数组名 a 作函数实参,不是把 a 数组的值传递给形参 m,而是将数组 a 的首地址传递给指针变量 m,使指针变量 m 指向数组 a 的首地址,这样他们就占用同一段内
47、存单元。当改变了指针变量所指向的存储单元中的内容,也就改变了数组 a 中的元素。函数 pit 的作用是将指针变量 m 所指向的存储单元中的各元素值加 1,也就是数组 a 中各元素的值加 l,所以输出结果为:2,3,4,5,6,20.有以下程序:#include stdio.hmain( )int a32=0 ,( *ptr)2,i,j;for(i=0;i2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+;for(i =0;i3;i + )for(j =0;j2;j + ) prinff( “%2d“ ,ai j );prinff(“ /n“ );若运行时输入:1 2 3 回车,则输出结果是( )。(分数:1.00)A.产生错误信息B.102000 C.123000D.102030解析:解析 程序中 a3)2=0将数组元素全部初始化为 0,指针变量 ptr