1、二级 C 语言-15-1 及答案解析(总分:74.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:45.00)1.为了提高软件模块的独立性,模块之间最好是U /U。 A. 控制耦合 B. 公共耦合 C. 内容耦合 D. 数据耦合(分数:2.00)A.B.C.D.2.若有如下程序;main() int m=-i;printf(“%d,%u,%o,%X“,m,m,m,m);则程序运行后的输出结果是( )。 A. -1,65535,177777,ffff B. -1,-1,177777,fffe C. -1,1,177777,ffff D. -1,65535,177776,fffe
2、(分数:1.00)A.B.C.D.3.已知在 ASCII 字符集中,数字 0 的序号为 48,下列程序的输出结果为_。main() char a=0,b=9;printf(“%d,%c/n“,a,b) ; A. 因输出格式不合法 B. 48,57 C. 0,9 D. 48,9(分数:1.00)A.B.C.D.4.以下数组定义中错误的是_。 A. int x3=0; B. int x23=1,2,3,4,5,6; C. int x3=1,2,3,4,5,6; D. int x3=1,2,3,4,5,6;(分数:1.00)A.B.C.D.5.以下选项中可作为 C 语言合法整数的是( )。 A. 1
3、0110B B. 0386 C. 0Xffa D. x2a2(分数:1.00)A.B.C.D.6.若变量已正确定义,要求通过 scanf(“%c%d%c%d“, A. 0 B. 1 C. 2 D. 3(分数:1.00)A.B.C.D.11.下列说法中,正确的是_。 A. 指针是一个变量 B. 指针中存放的可以是任何类型的值 C. 指针变量是变量地址 D. 指针变量占用存储空间(分数:1.00)A.B.C.D.12.有以下程序:void fun2(char a,char b) printf(“%c%c“,a,b);char a=A,b=B;void fun1()a=C;b=D;main()fun
4、1();printf(“%c%c“,a,b);un2(E,F);程序的运行结果是_。 A. C D E F B. A B E F C. A B C D D. C D A B(分数:2.00)A.B.C.D.13.C 语言函数返回值的类型是由_决定的。 A. return 语句中的表达式类型 B. 调用函数的主调函数类型 C. 调用函数时临时 D. 定义函数时所指定的函数类型(分数:1.00)A.B.C.D.14.以下定义数组的语句中错误的是_。 A.int num24=1,2,3,4,5,6 B.int num3=1,2,3,4,5,6); C.int num=1,2,3,4,5,6; D.i
5、nt num4=1,2,3,4,5,6;(分数:2.00)A.B.C.D.15.有以下程序:main() char p=a,b,c,q=“abc“;printf(“%d%d/n“,sizeof(p),sizeof(q);程序运行后的输出结果是 _。 A. 4 4 B. 3 3 C. 3 4 D. 4 3 (分数:1.00)A.B.C.D.16.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是U /U A. strcpy(s1,s2) B. strcpy(s1,“ABCDE“); C. s1
6、=“ABCDE“; D. for(i=0;i6;i+) s1i=s2i;(分数:1.00)A.B.C.D.17.以下对结构体变量 mix 中成员 x 的正确引用是_。struct int t;int x;mix,*p;p= A. (*p).mix.x B. (*p).x C. p-mix.x D. p.mix.x(分数:1.00)A.B.C.D.18.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。 A. 课号,成绩 B. 学号,成绩 C. 学号,课号 D. 学号,姓名,成绩(分
7、数:2.00)A.B.C.D.19.有以下程序 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); 程序运行后的输出结果是 A)2 B)3 C)43 D)44(分数:1.00)A.B.C.D.20.表达式5-1的值是U /U。 A.整数 4 B.字符 4 C.表达式不合法 D.字符 6(分数:1.00)A.B.C.D.21.有以下程序:#include stdio.hmain( ) int a,b,d =25;a = d/10%9;b
8、= aprintf(“% d,% d/n“ ,a,b);程序运行后的输出结果是( )。 A. 6,1 B. 2,1 C. 6,0 D. 2,0(分数:1.00)A.B.C.D.22.软件调试的目的是( )。 A. 发现错误 B. 改正错误 C. 改善软件的性能 D. 挖掘软件的潜能(分数:1.00)A.B.C.D.23.若有以下的说明和语句,则在执行 for 语句后,*(* pt+1)+2)表示的数组元素是 ( )int t3 3,*pt3,k;for(k0;k3;k+ +)ptktk 0; A.t2 0 B.t2 2 C.t1 2 D.t2 1 (分数:1.00)A.B.C.D.24.执行程
9、序段“int x=1,y=2;x=xy;y=yx;x=xy;”后,x 和 y 的值分别是_。 A. 1 和 2 B. 2 和 2 C. 2 和 1 D. 1 和 1(分数:1.00)A.B.C.D.25.设有定义:char s81; int i=10;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是 A. gets(s); B. while(si+=getchar()!=/n); si=/0; C. scanf(“%s“, s); D. do scanf(“%C“, while(si+!=/n); s=/0;(分数:2.00)A.B.C.D.26.下列标识符不是
10、关键字的是U /U。 A. break B. char C. Switch D. return(分数:1.00)A.B.C.D.27.下列叙述中正确的是 A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C. 顺序存储结构能存储有序表,链式存储结构不能存储有序表 D. 链式存储结构比顺序存储结构节省存储空间(分数:2.00)A.B.C.D.28.有以下程序:fun(char p10) int n=0,i;for(i=0;i7;i+)if(Pi0=T)n+;return n;main()char str10
11、=“Mon“,“Tue“,“wed“,“Thu“,“Fri“,“Sat“,“Sun“;printf(“%d/n“,fun(str);程序执行后的输出结果是_。 A. 1 B. 2 C. 3 D. 0(分数:2.00)A.B.C.D.29.有以下程序:#includestdio.hmain() FILE *fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2. dat“, “w“); fprintf(fp, “%d%d%d% d/n“, a0, a1, a2); fprintf(fp, “%d%d% d/n“, a3, a4, a5); fclose(f
12、p); fp=fopen(“d2.dat“, “r“); fscanf(fp, “%d%d“, k, n); printf(“%d%d/n“, k, n); fclose(fp); 程序运行后的输出结果是( )。 A. 1 B. 12 4 C. 123 4 D. 123 456(分数:1.00)A.B.C.D.30.下面四个选项中,均是不正确的八进制数或十六进制数的选项是 A. 016 0x8f 018 B. 0abc 017 0xa C. 010 -0x11 0x16 D. 0a12 7ff -123(分数:1.00)A.B.C.D.31.已有定义:char a=“xyz“,b=(x,y,z
13、;,下列叙述中正确的是U /U。 A. 数组 a 和 b 的长度相同 B. a 数组长度小于 b 数组长度 C. a 数组长度大于 b 数组长度 D. 上述说法都不对(分数:2.00)A.B.C.D.32.以下能正确定义一维数组的选项是_。 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“;(分数:2.00)A.B.C.D.33.不合法的 main 函数命令行参数表示形式是 A. main(inta,char *c) B. mmn(int arc,char
14、*arv) C. main(int argc,char *argv) D. majn(int argv,char *atgc)(分数:1.00)A.B.C.D.34.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof (fp)的返回值为( )。 A. EOF B. 非 0 值 C. 0 D. NULL(分数:1.00)A.B.C.D.35.下列关于 C 语言文件的叙述中正确的是_。 A.文件由一系列数据依次排列组成,只能构成二进制文件 B.文件由结构序列组成,可以构成二进制文件或文本文件 C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型
15、只能是文本文件(分数:1.00)A.B.C.D.二、B填空题/B(总题数:15,分数:29.50)36.有以下程序: #define N 20 fun(int a,int n,int m) inf i,j; for(i=m;in;i-)ai+1=ai; main() int i,aN=(1,2,3,4,5,6,7,8,9,10); fun(a,2,9); for(i=0;i5;i+)printf(“%d”,ai); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_37.若整型变量 a 和 b 中的值分别为 7 和 9,要求按以下格式输出 a 和 b 的值: a=7 b=9 请完成输出
16、的语句:printf(“_“a,b);。(分数:4.00)填空项 1:_38.以下函数 creat 用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。 #include stdio.h struct list char dara; struct list *next; ; struct list *creat() struct list *h,*p,*q; char ch; h= (struct list (*) malloc (sizeof (struct list); _; ch=getchar(); while(ch!=?) p=(s
17、truct list*) malloc) sizeof (struct list); p-data=ch; _; q=p; ch=getchar(); p-next=/0; _: (分数:1.00)填空项 1:_39.下面程序把从终端读入的文本(用#作为文本结束标志)复制到一个名为 file.txt 的新文件中。补足所缺语句。 main() char ch; FILE*fp; if(fp=fopen(_)NULL)exit(0); while(ch=getchar()!=#) fputc(ch,fp); _; (分数:1.00)填空项 1:_40.下列程序把数组元素中的最大值放入 a0中。则在
18、 if 语句中的条件表达式应该是_。 main() int a 10=6,7,2,9,1,10,5,8,4,3,*p=a,i,b for(i=0:i10:i+,p+)if(_)b=*a;*a=*p;*p=b; printf(“%d“,*a): (分数:1.00)填空项 1:_41.下面程序的功能是:把从终端读入的文本(用作为文本结束标志)输出到一个名为 bi.dat 的新文件中。请填空。 #include “stdio.h“ FILE *fp; mainU /U char eh; if(fp=fopen(_)=NULL) exit(0); while(eh=getcharU /U)!=)fpu
19、te(ch,fp); felose(fp); (分数:2.00)填空项 1:_42.下列表达式用于判断 y 是否为闰年。闰年的判断条件是:年号能被 4 整除但不能被 100 整除或年号能被 400 整除,请填空 1。(分数:2.00)填空项 1:_43.已有定义:char c=;int a=1,b;(此处 c 的初值为空格字符),执行 b=!c|a;后 b 的值为 1。(分数:4.00)填空项 1:_44.若有说明 char s1=“That girl“,s2=“is beautiful“;则使用函数 strcmp(s1,s2)后,结果是 1。(分数:2.00)填空项 1:_45.下面程序的功
20、能是两个整数进行交换,请填空。 sub(int * x,int *y) U U /U /Uz=*x; *x= *y; *y=z; return; main() int m,n,*t1,*t2; scanf(“%d,%d“, sum=count=0; for(i=0; i20; i+)scanf(“% d“, U U /U /U);for(i=0; i20; i+) if(ai0) count+; sum+=ai; printf(“sum=% d, count=% d/n“, sum, count); (分数:2.00)填空项 1:_48.数据元素之间U U /U /U的整体称为逻辑结构。(分数
21、:1.00)填空项 1:_49.下列程序的输出结果是_。 #includestdio.h main() int x=1,y=1,a=1,b=1; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+;break; printf(“a=%d,b=%d/n“,a,B) ; (分数:1.50)填空项 1:_50.软件设计模块化的目的是 1。(分数:2.00)填空项 1:_二级 C 语言-15-1 答案解析(总分:74.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:45.00)
22、1.为了提高软件模块的独立性,模块之间最好是U /U。 A. 控制耦合 B. 公共耦合 C. 内容耦合 D. 数据耦合(分数:2.00)A.B.C.D. 解析:解析 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。2.若有如下程序;main() int m=-i;printf(“%d,%u,%o,%X“,m,m,m,m);则程序运行后的输出结果是( )。 A. -1,65535,177777,ffff B. -1,-1,177777,fffe C. -1,1,177
23、777,ffff D. -1,65535,177776,fffe(分数:1.00)A. B.C.D.解析:解析 -1 为带符号的整型数,在内存中的存放形式为 1111111111111111。按带爷号的整型格式输出仍为-1;按无带符号的整数输出为 65535(将 1111 1111 1111 1111 转换为十进制数);按八进制数输出为 177777(将 1111 1111 1111 1111 转换为八进制数,方法为由低位到高位,每三位一组,用一个八进制数代替);按八进制数输出为 ffff(将 1111111111111111 转换为十六进制数,方法为由低位到高位,每四位一组,用一个十六进制数
24、代替)。3.已知在 ASCII 字符集中,数字 0 的序号为 48,下列程序的输出结果为_。main() char a=0,b=9;printf(“%d,%c/n“,a,b) ; A. 因输出格式不合法 B. 48,57 C. 0,9 D. 48,9(分数:1.00)A.B.C.D. 解析:解析 注意输出控制符%d,%c,分别表示以十进制形式输出字符的 ASCII 码值和字符。4.以下数组定义中错误的是_。 A. int x3=0; B. int x23=1,2,3,4,5,6; C. int x3=1,2,3,4,5,6; D. int x3=1,2,3,4,5,6;(分数:1.00)A.B
25、. C.D.解析:评析:C 语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,并且要有足够的空间来保证定义的数组长度始终大于等于需要存放的元素的长度。选项 B 中行数定义为 2 行,但实际却需要存放 3 行元素故不正确。5.以下选项中可作为 C 语言合法整数的是( )。 A. 10110B B. 0386 C. 0Xffa D. x2a2(分数:1.00)A.B.C. D.解析:解析 在 C 语言中,整数常量可以用十进制、八进制和十六进制来表示,选项 A 为二进制表示,故选项 A 不正确;选项 B 是八进制表示法,但在八进制数巾,各个位数只能为数字 0 到 7 中的一个,而在选项 B
26、 中,有一个数字 8,故选项 B 不正确:选项 C 为十六进制表示法正确;选项 D 中也为十六进制表示法,但十六进制数以 ox 开头,故选项 D 不正确,所以,4 个选项中选项 c 符合题意。6.若变量已正确定义,要求通过 scanf(“%c%d%c%d“, A. 0 B. 1 C. 2 D. 3(分数:1.00)A.B. C.D.解析:解析 “ C.int num=1,2,3,4,5,6; D.int num4=1,2,3,4,5,6;(分数:2.00)A. B.C.D.解析:解析 int num24定义 2 行 4 列数组,赋值给 num 数组 3 行错误。所以选择 A。15.有以下程序:
27、main() char p=a,b,c,q=“abc“;printf(“%d%d/n“,sizeof(p),sizeof(q);程序运行后的输出结果是 _。 A. 4 4 B. 3 3 C. 3 4 D. 4 3 (分数:1.00)A.B.C. D.解析:解析 字符数组有两种定义方式:一种是逐个字符赋给数组中各元素,如本题中“p=a,b,c的定义,由于定义时没有给出数组大小,此时字符个数就是数组的长度;另一种是将字符串作为字符数组来处理,如题中“q=“abc“”的定义形式。C 语言规定,字符串以/0作为结束符,并占用一个存储空间。sizeof()函数是计算变量或数组所分配到的内存空间的大小,故
28、本题的输出结果是3 4。16.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是U /U A. strcpy(s1,s2) B. strcpy(s1,“ABCDE“); C. s1=“ABCDE“; D. for(i=0;i6;i+) s1i=s2i;(分数:1.00)A.B.C. D.解析:解析 数组名 s1 是代表 s1 数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量, 因此 sl=“ABCDE“的方法是错误的。17.以下对结构体变量 mix 中成员 x 的正确引用是_。s
29、truct int t;int x;mix,*p;p= A. (*p).mix.x B. (*p).x C. p-mix.x D. p.mix.x(分数:1.00)A.B. C.D.解析:解析 结构体变量中的成员有 3 种引用方式:结构体变量名成员名;指针变量名-成员名:(*指针变量名)成员名。18.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。 A. 课号,成绩 B. 学号,成绩 C. 学号,课号 D. 学号,姓名,成绩(分数:2.00)A.B.C. D.解析:19.有以下程
30、序 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); 程序运行后的输出结果是 A)2 B)3 C)43 D)44(分数:1.00)A. B.C.D.解析:解析 因为嵌套 ifelse 结构中,else 总是与最近一个订配对,所以此程序可以等价转化为以下 代码: if(ab) if (bC printf (“d”,(1+1); elsc Prantf(“d”, +d+1); printf(“d”,d); 最外层一个判断语句没有执行,所以
31、,它所包含的判断语句也没有执行,仅执行了最后一个 printf 语句, 结果为 2。20.表达式5-1的值是U /U。 A.整数 4 B.字符 4 C.表达式不合法 D.字符 6(分数:1.00)A. B.C.D.解析:解析 在 C 语言中,字符都是变为其对应的 ASCII 码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符 5 和字符 1 的 ASCII 码值相差仍是 4。21.有以下程序:#include stdio.hmain( ) int a,b,d =25;a = d/10%9;b = aprintf(“% d,% d/n“ ,a,b);程序运行后的输出结果是( )。 A.
32、 6,1 B. 2,1 C. 6,0 D. 2,0(分数:1.00)A.B. C.D.解析:解析 “/”表示整除,“%”表示求余。程序中表达式 a=d/10%9 的值为 25/10%9=2,则 b=a int i=10;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是 A. gets(s); B. while(si+=getchar()!=/n); si=/0; C. scanf(“%s“, s); D. do scanf(“%C“, while(si+!=/n); s=/0;(分数:2.00)A.B.C. D.解析:解析 在 scanf 中,采用“%s”格式符
33、将整个字符串一次输入,直到遇到空格或制表符为止。对于选项 C,不能正确读入带有空格的字符串。26.下列标识符不是关键字的是U /U。 A. break B. char C. Switch D. return(分数:1.00)A.B.C. D.解析:解析 break、char、return、switch 都是 C 语言中的关键字,Switch 不是。因为 C 语言区分字母的大小写。27.下列叙述中正确的是 A. 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B. 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C. 顺序存储结构能存储有序表,链式存储结构不能存储
34、有序表 D. 链式存储结构比顺序存储结构节省存储空间(分数:2.00)A. B.C.D.解析:解析 顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。其优点是占用最少的存储空间。所以选项 D 错误。顺序存储结构可以存储如二叉树这样的非线性结构,所以选项 B 错误。链式存储结构也可以存储线性表,所以选项 C 错误。28.有以下程序:fun(char p10) int n=0,i;for(i=0;i7;i+)if(Pi0=T)n+;return n;main()char str10=“Mon“,“Tue“,“wed“,“Thu“,“Fri“,“
35、Sat“,“Sun“;printf(“%d/n“,fun(str);程序执行后的输出结果是_。 A. 1 B. 2 C. 3 D. 0(分数:2.00)A.B. C.D.解析:解析 fun()函数实现的功能为查找二维字符数组第一列中为字符 T 的个数。二维数组的地址作为函数的实参。29.有以下程序:#includestdio.hmain() FILE *fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2. dat“, “w“); fprintf(fp, “%d%d%d% d/n“, a0, a1, a2); fprintf(fp, “%d%d% d/
36、n“, a3, a4, a5); fclose(fp); fp=fopen(“d2.dat“, “r“); fscanf(fp, “%d%d“, k, n); printf(“%d%d/n“, k, n); fclose(fp); 程序运行后的输出结果是( )。 A. 1 B. 12 4 C. 123 4 D. 123 456(分数:1.00)A.B.C.D. 解析:解析 将有 6 个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。30.下面四个选项中,均是不正确的八进制数或十
37、六进制数的选项是 A. 016 0x8f 018 B. 0abc 017 0xa C. 010 -0x11 0x16 D. 0a12 7ff -123(分数:1.00)A.B.C.D. 解析:解析 八进制中,不可能包括 8 以上的数字,它的范围只在 07 之间,以 0 开头。同样,十六进制是以 0x 开头,数字在 09 和 AF 之间。31.已有定义:char a=“xyz“,b=(x,y,z;,下列叙述中正确的是U /U。 A. 数组 a 和 b 的长度相同 B. a 数组长度小于 b 数组长度 C. a 数组长度大于 b 数组长度 D. 上述说法都不对(分数:2.00)A. B.C.D.解
38、析:解析 字符数组 a中用字符串常量“xyz”进行初始化,字符数组 a的长度为字符的个数,所以其值为 3,并不包括字符串结束标记/0;字符串数组 b用 3 个字符x、y、z来初始化,所以其字符串的长度等于 3。32.以下能正确定义一维数组的选项是_。 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“;(分数:2.00)A.B. C.D.解析:解析 A 中初值的个数大于 a 的定义的长度,错误。C 中 a 被定为字符却给它赋值为数值,错误。D 中 a 是整型数
39、组却给它赋值为字符串,错误。33.不合法的 main 函数命令行参数表示形式是 A. main(inta,char *c) B. mmn(int arc,char *arv) C. main(int argc,char *argv) D. majn(int argv,char *atgc)(分数:1.00)A.B.C. D.解析:解析 main()函数可以带有参数,并且参数只能有两个,第一个参数类型为整型,用来记下命令行的参数个数,第二个参数为一个字符型指针数组,或字符型二级指针变量(指向一个数组,数组元素又是一个一级字符指针),其各个元素用来记下从命令行各参数字符串的首地址故本题只有 C 选
40、项不符合要求。所以,4 个选项中 C 为所选。34.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof (fp)的返回值为( )。 A. EOF B. 非 0 值 C. 0 D. NULL(分数:1.00)A.B. C.D.解析:解析 feof()函数的功能是检查一个文件的读写指针是否已指向此文件的结尾,如果是的话函数返回非 0 值,否则函数返回 0。所以本题应该选择 B。35.下列关于 C 语言文件的叙述中正确的是_。 A.文件由一系列数据依次排列组成,只能构成二进制文件 B.文件由结构序列组成,可以构成二进制文件或文本文件 C.文件由数据序列组成,可以构成二进制文件或
41、文本文件 D.文件由字符序列组成,其类型只能是文本文件(分数:1.00)A.B.C. D.解析:解析 本题考查文件的概念,文件是由数据序列组成,可以构成二进制文件或文本文件,所以答案为 C 选项。二、B填空题/B(总题数:15,分数:29.50)36.有以下程序: #define N 20 fun(int a,int n,int m) inf i,j; for(i=m;in;i-)ai+1=ai; main() int i,aN=(1,2,3,4,5,6,7,8,9,10); fun(a,2,9); for(i=0;i5;i+)printf(“%d”,ai); 程序运行后的输出结果是_。(分数
42、:2.00)填空项 1:_ (正确答案:12344)解析:解析 本题考查的是数组名作函数的实参。数组名可以作为实参传送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素。在本题中,函数 fun()通过一个 for 循环,将形参数组 a 中下标为 n 到 m 之间的元素向后移动一位,an元素的值不变。所以主函数调用 fun(a,2,9);之后,数组 a 的内容变成(1,2,3,4,4,5,6,7,8,9,10),最后通过 for 循环输出数组前 5 个元素为 12344。37.若整型变量 a 和 b 中的值分别为 7 和 9,要求按以下格式输出 a 和 b
43、 的值: a=7 b=9 请完成输出的语句:printf(“_“a,b);。(分数:4.00)填空项 1:_ (正确答案:a=%d/nb=%d/n)解析:解析 本题考查两个知识点:标准输出函数的格式与转义字符。/n 为转义字符,其意义为换行,%d代表以整型的格式输出相应位置变量的值。其他字符按原样输出。如果要输出%、/这两个符号,则需要连续写两次,即遇到%或/输出%/。38.以下函数 creat 用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。 #include stdio.h struct list char dara; struct list *next; ; struct list *creat() struct list *h,*p,*q; char ch; h= (struct list (*) malloc (sizeof (struct list); _; ch=getchar(); while(ch!=?) p=(struct list*) malloc) sizeof (struct list); p-data=ch; _; q=p; ch=getchar(); p-next=/0; _: (分数:1.00)填空项 1:_