1、二级 C语言笔试-335 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.设有以下定义和语句:int a32=1,2,3,4,5,6,), *p3;p0=a1;则*(p0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.a11D.a122.有以下程序:main()int m=3,n=4,x;x;-m+;x=x+8/+n;printf(“%d/n“,x);程序运行后的输出结果是( )。(分数:1.00)A.3B.5C.-1D.-23.有以下程序:#include stdio.h#define F(X,Y)(X)*(Y)
2、main()int a=3,b=4;printf(“%d/n“,F(a+,b+);程序运行后的输出结果是( )。(分数:1.00)A.12B.15C.16D.204.以下定义语句中正确的是( )。(分数:1.00)A.char a=Ab=B;B.float a=b=l0.0;C.int a=l0,*b=scanf(“%d“,dos+=1; a=a-2;while (a!=n);printf(“%d/n“,s);若要使程序的输出值为 2,则应该从键盘给 n输入的值是( )。(分数:1.00)A.-1B.-3C.-5D.06.以下叙述中正确的是( )。(分数:1.00)A.C程序中注释部分可以出现
3、在程序中任意合适的地方B.花括号和只能作为函数体的定界符C.构成 C程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C语句之间的分隔符,不是语句的一部分7.下图所示的二叉树的先序遍历序列是( )。(分数:1.00)A.B.C.D.8.有以下程序:main()char a,b,c,*d;a=/;b=/xbc;c=/0xab;d=“/017“;printf(“%c%c%c/n“,a,b,c,*d);编译时出现错误,以下叙述中正确的是( )。(分数:1.00)A.程序中只有“a=/;”语句不正确B.“b=/xbc;”语句不正确C.“d=“/0127“;”语句不正确D.“a=/;”和“c=
4、/0xab;”语句都不正确9.若变量已正确定义,要求程序段完成求 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)10.(48)(50)以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。#include stdlib.hstruct nodechar data
5、; struct node *next;(48) CreatList(char *s)struct 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=(49);q-next=p;q=(50);s+;p-next=0;return h;main()char str=“link list“;struct node *head;head=CreatList(str);(分数:1.00)A.char
6、*B.stmct nodeC.strumnode*D.char11.对于白箱(盒)测试用例的各设计准则,下列叙述中正确的是( )。(分数:1.00)A.分支覆盖准则比语句覆盖准则严密B.条件覆盖要比分支覆盖优越。因此,条件覆盖能完全满足分支覆盖C.组合条件覆盖准则既能满足分支覆盖准则,也能满足条件覆盖准则。因此,组合条件覆盖准则是一种完全测试D.上述说法都不对12.(分数:1.00)A.p-nextB.pC.sD.s-next13.有以下程序段:int m=0,n=0;char c=a;scanf(“%d%c%d“,printf(“%d,%c,%d/n“,m,c,n);若从键盘上输入 10A1
7、0回车,则输出结果是( )。(分数:1.00)A.10,A,10B.10,a,10C.10,a,0D.10,A,014.有以下程序:main()char s=“ABCD“, *p;for( p=s+1;ps+4;p+) printf(“%s/n“,p);程序运行后的输出结果是( )。(分数:1.00)A.ABCD BCD CD DB.ABCDC.BCDD.BCDCDD15.以下能正确定义二维数组的是( )。(分数:1.00)A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1,2,3,4;16.有以下程序:main()int a; char c=10;floa
8、t f=100.0; double x;a=f/=c*=(x=6.5);printf(“%d %d %3.1f %3.1f/n“,a,c,f,x);程序运行后的输出结果是( )。(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.517.(分数:1.00)A.*sB.SC.*s+D.(*s)+18.模块化程序设计主要强调的是( )。(分数:1.00)A.程序的规模要大B.对程序进行分解C.程序的执行效率D.程序的可移植性19.结构化程序由 3种基本结构组成,3 种基本结构组成的算法( )。(分数:1.00)A.可以完成任何
9、复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务20.有以下程序段:main()int a=5, *b, *c;c= b=程序在执行了“c=b=”语句后,表达式*c 的值是( )。(分数:1.00)A.变量 a的地址B.变量 b中的值C.变量 a中的值D.变量 b的地址21.下列数据结构中,不是线性结构的是( )。(分数:1.00)A.线性链表B.带链的队列C.带链的栈D.二叉链表22.有以下程序:main()int x=102, y=012;printf(“%2d,%2d/n“,x,y);执行后输出结果是( )。(分数:1.00)A.10,01B.0
10、2,12C.102,10D.02,1023.有以下程序:struct STUchar name10;int num;;void f1(struct STU c)struct STU b=“LiSiGuo“,2042);c=b;void f2(struct STU *c)struct STU b=“SunDan“,2044);*c=b;main()struct STU a=“YangSan“,2041,b=“WangYin“,2043);f1((分数:1.00)A.;f2(printf(“%d %d/n“,a.nu24.设有以下语句:typedef struct Sint g; char h;
11、T;则下面叙述中正确的是( )。(分数:1.00)A.可以用 S定义结构体变量B.可以用 T定义结构体变量C.S是 struct类型的变量D.T是 stnictS类型的变量25.以下选项中能正确把 c1定义成结构体变量的是( )。(分数:1.00)A.typedef structint red; int red; int green; int blue; COLOR; COLOR c1;B.struct color c1int redint red;int greenint blue;C.stmctcolor int red, int green; int blue; c1;D.structi
12、nt red;int green;int blue;c1;26.在深度为 6的满二叉树中,结点的个数为( )。(分数:1.00)A.32B.31C.16D.1527.设有如下程序:#includestring.h“main()static char s120,s220;scanf(“%s“,s1);scanf(“%s“,s2);if(strcmp(s1,s2) printf(“);else printf(“$“);printf(“%d/n“,strlen(strcat(s1,s2);如果从键盘上输入 name1回车name2回车,则程序运行后的输出结果是( )。(分数:1.00)A.$9B.1
13、1C.$10D.1028.关系数据库管理系统能实现的专门关系运算包括( )。(分数:1.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表29.有以下程序:main()char *S=“one“,“two“,“three“,*p;p=s1;printf(“%c,%s/n“, *(p+1), s0);执行后输出结果是( )。(分数:1.00)A.n,twoB.t,oneC.w,oneD.o,two30.有以下程序:main()char k; int i;for(i=1;i3;i+)scanf(“%c“,switch(k)case 0: printf(“anot
14、her/n“);case 1: printf(“number/n“);程序运行时,从键盘输入 01回车,程序执行后的输出结果是( )。(分数:1.00)A.anothernumberB.anothernumberanotherC.anothernumbernumberD.numbernumber31.已定义以下函数:fun(char *p2,char *p1)while (*p2=*p1)!=/0)p1+;p2+;函数的功能是( )。(分数:1.00)A.将 p1所指字符串复制到 p2所指内存空间B.将 p1所指字符串的地址赋给指针 p2C.对 p1和 p2两个指针所指字符串进行比较D.检查
15、p1和 p2两个指针所指字符串中是否有/032.有以下程序:#include stdlib.hstruct NODEint num; struct NODE *next; ;main()struct NODE *p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)mallloc(sizeof(struct NODE);r=(struct NODE*)malloc(sizeof(struct NODE);p-num=10;q-num=20; r-num=30;p-next=q;q-next=r;printf(“%d
16、/n“,p-num+q-next-num);程序运行后的输出结果是( )。(分数:1.00)A.10B.20C.30D.4033.有以下程序:int *f(int *x, int *y)if (*x*y)return x;elsereturn y;main()int a=7,b=8,*p,*q,*r;p= q=r=f(p,q);printf (“%d,%d,%d/n“,*p,*q,*r);执行后输出结果是( )。(分数:1.00)A.7,8,8B.7,8,7C.8,7,7D.8,7,834.有以下程序:main()char a=a,b;printf(“%c,“,+(分数:1.00)A.;pri
17、35.下列叙述中正确的是( )。(分数:1.00)A.数据库设计是指设计数据库系统B.数据库设计是指设计数据库管理系统C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.以上三种说法都不对36.结构化程序设计的主要特点是( )。(分数:1.00)A.每个控制结构要模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控制结构只有一个入口和一个出口37.下面程序段的执行结果是( )。int x=10;for(;x;x-)if(x%3)continue;printf(“%d“,x);(分数:1.00)A.875421B.963C.741D.85238.下列关于 C语言用户标识符
18、的叙述中正确的是( )。(分数:1.00)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头39.有如下程序:#include stdio.hmain()FILE *fp1;fp1=fopen(“f1.txt“,“w“);fprintf(fp1, “abc“);fclose(fp1);若文本文件 f1.txt中原有内容为 good,则运行以上程序后文件 f1.txt中的内容为( )。(分数:1.00)A.goodabcB.
19、abcdC.abcD.abcgood40.有以下程序:#includestring.hmain()char str20=“Hello“,“Beijing“),*p=str0;printf(“%d/n“,strlen(p+20);程序运行后的输出结果是( )。(分数:1.00)A.0B.5C.7D.2041.有以下程序:main()char str10=“China“,“Beijing“),*p=str;printf(“%s/n“,p+10);程序运行后的输出结果是( )。(分数:2.00)A.ChinaB.BeijngC.ngD.ing42.若有以下定义和语句:#includestdio.hi
20、nt a=4,b=3,*p,*q,*w;p= q= w=q; q=NULL;则以下选项中错误的语句是( )。(分数:2.00)A.*q=0;B.w=p;C.*p=a;D.*p=*w;43.有以下程序:int f(int(分数:2.00)A.44.有定义语句:“int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x 的值不为 3的是( )。(分数:2.00)A.if(ca)x=1;elseif(ba)x=2;elsex=3;B.if(a3)x=3;elseif(a2)x=2;elsex=1;C.if(a3)x=3;if(a2)x=2;if(a1)x=1;D.if(ab)x=b;i
21、f(bc)X=c;if(ca)x=a;45.下列叙述中错误的是( )。(分数:2.00)A.测试是程序执行的过程,目的在于发现错误B.一个好的测试在于能发现至今未发现的错误C.一个成功的测试是发现了至今未发现的错误D.上述说法都不对46.有以下程序:main()int i=10,j=1;printf(“%d,%d/n“,i-,+j);执行后输出结果是( )。(分数:2.00)A.9,2B.10,2C.9,1D.10,147.有以下程序:int f(int n)if(n=1) return 1;else return f(n-1)+1;main()int i,j=0;for(i=1; i3; i
22、+) j+=f(i);printf(“%d/n“,j);程序运行后的输出结果是( )。(分数:2.00)A.4B.3C.2D.148.有以下程序:main()int x=3,y=2,z=1;printf(“%d/n“,x/y程序运行后的输出结果是( )。(分数:2.00)A.3B.2C.1D.049.有以下程序:main()int x8=8,7,6,5,0,0,*s;s=x+3;printf(“%d/n“,s2);执行后输出结果是( )。(分数:2.00)A.随机值B.0C.5D.650.下列数据模型中,具有坚实理论基础的是( )。(分数:2.00)A.关系模型B.网状模型C.层次模型D.以上
23、三个都是二、填空题(总题数:19,分数:40.00)51.在最坏情况下,冒泡排序所需要的比较次数为 【1】 。(分数:2.00)填空项 1:_52.在面向对象方法中,信息隐蔽是通过对象的 【2】 性来实现的。(分数:2.00)填空项 1:_53.软件生命周期包括 8个阶段。为使各时期的任务更明确,又可以分为以下 3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于 【3】 期。(分数:2.00)填空项 1:_54.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为 【4】 。(分数:2.00)填空项 1:_55.
24、在关系运算中, 【5】 运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。(分数:2.00)填空项 1:_56.下面程序执行后 k的值为 【6】 。int a=1,b=2,c=3,d=4,k;k=ab? a: cd? c: d(分数:2.00)填空项 1:_57.下面程序的功能是输出数组中最大的数,由 a指针指向该元素。请填空。main()int s=6,7,2,13,9,1,12,10,5,8,4,3,11),*a,*b;for( 【7】 )if(*a*b) a=b;printf(“%d“,*a);(分数:2.00)填空项 1:_58.下面程
25、序段的输出结果是 【8】 。int x=5;doprintf(“%d “,x-=4);while (!(-x);(分数:2.00)填空项 1:_59.用下面语句调用库函数 malloc,使单精度型指针 p指向具有 40个字节的动态存储空间,请填空。p=(float*) 【9】 ;(分数:2.00)填空项 1:_60.在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是 【10】 。(分数:2.00)填空项 1:_61.以下程序的功能是调用函数 fun计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun(int n)int m=0,f=1,i;for(i=
26、1;i=n;i+)m+=i*f;f= 【11】 ;return m;main()printf(“m=%d/n“, 【12】 );(分数:4.00)填空项 1:_62.以下程序运行后的输出结果是 【13】 。main()int i,n=0,0,0,0,0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(“%d “,ni);(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 【14】 。main()int i,j,a 3=1,2,3,4,5,6,7,8,9);for(i=0;i3;i+)for(j=i+1;j3;j+) aj i=0;for(i=0;i3;i+)f
27、or(j=0;j3;j+) printf(“%d “,aij);printf(“/n“);(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是 【15】 。int a=5;fun (int b)static int a=10;a+=b+;printf(“%d “,a);main()int c=20;fun(c);a+=c+;Printf(“%d/n“,a);(分数:2.00)填空项 1:_65.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。【16】 (double,double);main()double x,y;scanf(“%1f%1f“,printf(“%1f/
28、n“,max(x,y);double max(double a,double b)return(ab ? a:b);(分数:2.00)填空项 1:_66.下面程序的运行结果是 【17】 。typedef union studentchar name10;long sno;char sex;float score4;STU;main()STU a5;printf(“%d/n“,sizeof(a);(分数:2.00)填空项 1:_67.以下程序运行后的输出结果是 【18】 。fun(int x)if(x/20)fun(x/2);printf(“%d “,x);main()fun(6);(分数:2.
29、00)填空项 1:_68.已有定义如下:struct nodeint data;struct node *next;*p;以下语句调用 malloc函数,使指针 p指向一个具有 struct node类型的动态存储空间。请填空。p=(struct node *)malloc( 【19】 );(分数:2.00)填空项 1:_69.以下程序的功能是将字符串 s中的数字字符放入 d数组中,最后输出 d中的字符串。例如,输入字符串:abcl23edf456gh,执行程序后输出:123456。请填空。#include stdioo.h#include ctype.hmain()char s80,d80;
30、 int i,j;gets(s);for(i=j=0;si!=/0;i+)if( 【20】 )dj=si;j+;dj=/0;puts(d);(分数:2.00)填空项 1:_二级 C语言笔试-335 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.设有以下定义和语句:int a32=1,2,3,4,5,6,), *p3;p0=a1;则*(p0+1)所代表的数组元素是( )。(分数:1.00)A.a01B.a10C.a11 D.a12解析:解析 本题中首先定义了一个 3行 2列的数组 a,一个长度为 3的指针数组 p,接着把地址 a1赋给 p0,
31、此时 p0为 a10的地址,p0+1 为 a11的地址,故*(p0+1 代表的元素为 a11。所以,4 个选项中选项 C符合题意。2.有以下程序:main()int m=3,n=4,x;x;-m+;x=x+8/+n;printf(“%d/n“,x);程序运行后的输出结果是( )。(分数:1.00)A.3B.5C.-1D.-2 解析:解析 主函数中首先定义了整型变量 m、n 和 x,并给 m和 n赋初值为 3和 4,接着执行两条赋值语句,第一条 x=-m+等价于 x=-m,m+,运行后 x的值为-3,第二条 x=x+8/+n等价于+n,x=x+8/n,即x=-3+8/5=-2,因此最后输出 x的
32、值为-2。所以,4 个选项中选项 D符合题意。3.有以下程序:#include stdio.h#define F(X,Y)(X)*(Y)main()int a=3,b=4;printf(“%d/n“,F(a+,b+);程序运行后的输出结果是( )。(分数:1.00)A.12 B.15C.16D.20解析:解析 在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值为3,b+的值为 4。因此最后的值为 3*4=12。所以,4 个选项中选项 A符合题意。4.以下定义语句中正确的是( )。(分数:1.00)A.char a=Ab=B;B.float a=b=l0.0;
33、C.int a=l0,*b=scanf(“%d“,dos+=1; a=a-2;while (a!=n);printf(“%d/n“,s);若要使程序的输出值为 2,则应该从键盘给 n输入的值是( )。(分数:1.00)A.-1B.-3 C.-5D.0解析:解析 根据题目要求,最后要使输出的 s值为 2,在程序中改变 s的值的语句只有循环体中的s+=1;语句,而初始 s的值为 0,显然要使 s的值变为 2,该语句必须执行两次,即 do-while循环中的循环体要执行两次,而在 do-while中,首先不执行条件而执行 do 后面的循环体语句,然后再判断 while循环条件。所以不管循环判断条件是
34、否为真 s+=1;语句至少执行一次,根据分析,只需要 while 后面括号的循环判断表达式的值为真成立一次且只能为真一次,将 4个选项中的内容依次代入该程序中不难得到只有 n=-3刚好使循环判断条件 a!=n为真一次。故 4个选项中选项 B符合题意。6.以下叙述中正确的是( )。(分数:1.00)A.C程序中注释部分可以出现在程序中任意合适的地方 B.花括号和只能作为函数体的定界符C.构成 C程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C语句之间的分隔符,不是语句的一部分解析:解析 /*与*/之间的信息称为注释信息,在 C语言中,允许在任何能够插入空格符的位置插入注释,但 C语
35、言的注释不能进行嵌套,故选项 A正确:在 C语言中,函数体是从花括号开始,到花括号结束。但没有规定花括号和只能作为函数体定界符,故选项 B错误;选项 C中前半句是正确的,C 程序由一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数,比如主函数 main()就不能由用户来命名,故选 C不正确;在 C语言中明确规定每条语句以分号;结束,分号是语句不可缺少的一部分,故选项 D不正确。所以,4 个选项中选项 A符合题意。7.下图所示的二叉树的先序遍历序列是( )。(分数:1.00)A. B.C.D.解析:解析 先序遍历顺序应该为:访问根结点先序遍历左子树先序遍历右子树。按照定义,先序遍历
36、序列是 ABDGCEHIF。8.有以下程序:main()char a,b,c,*d;a=/;b=/xbc;c=/0xab;d=“/017“;printf(“%c%c%c/n“,a,b,c,*d);编译时出现错误,以下叙述中正确的是( )。(分数:1.00)A.程序中只有“a=/;”语句不正确B.“b=/xbc;”语句不正确C.“d=“/0127“;”语句不正确D.“a=/;”和“c=/0xab;”语句都不正确 解析:解析 语句 a=/是错误的,因为/是转义字符,应该用/来表示,语句“B=/xbc;”是正确的,它是将一个用十六进制表示的转义字符赋给一个字符型变量;语句“c=/0xab;”是错误的
37、,反斜线后的十六进制只可由小写 x开头,不能用 0x。语句“d=“/0127“;”是正确的,可以给字符型指针变量赋一个字符串常量,其作用是让该指针变量指向该字符串常量。所以,D 选项为所选。9.若变量已正确定义,要求程序段完成求 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)解析:解析 选项 B中 for循环了 5次,而每次循环的时候,都将 p的值重新赋
38、值为 1后,再乘以当前数字 i,所以最后的结果为 5,显然不是 5!的值,同样的分析可知选项 A、选项 C和选项 D计算的都是5!。所以,4 个选项中选项 B符合题意。10.(48)(50)以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。#include stdlib.hstruct nodechar data; struct node *next;(48) CreatList(char *s)struct node *h,*p,*q;h=(struct node *)malloc(sizeo
39、f(Struct node);p=q=h;while(*s!=/0)p=(struct node *)malloc(sizeof(struct node);p-data=(49);q-next=p;q=(50);s+;p-next=0;return h;main()char str=“link list“;struct node *head;head=CreatList(str);(分数:1.00)A.char*B.stmct nodeC.strumnode* D.char解析:11.对于白箱(盒)测试用例的各设计准则,下列叙述中正确的是( )。(分数:1.00)A.分支覆盖准则比语句覆盖准则
40、严密 B.条件覆盖要比分支覆盖优越。因此,条件覆盖能完全满足分支覆盖C.组合条件覆盖准则既能满足分支覆盖准则,也能满足条件覆盖准则。因此,组合条件覆盖准则是一种完全测试D.上述说法都不对解析:解析 白箱(盒)测试是根据对程序内部逻辑结构的分析宋选取测试用例。白箱(盒)测试用例的设计准则有:语句覆盖、分支覆盖、条件覆盖和组合条件覆盖。分支覆盖通过足够多的测试用例,使程序中的每个分支至少通过一次。分支覆盖准则比语句覆盖准则严密一些,选项 A正确;条件覆盖通过执行足够多的测试用例,使每个判定中的每个条件都能取到两种不同的结果(“真”与“假”)。虽然条件覆盖要比分支覆盖优越,但并不能完全满足分支覆盖,
41、选项 B错误;组合条件覆盖要求通过足够多的测试用例,使每个判定中各条件的各种可能组合至少出现一次,它则既能满足分支覆盖准则,也能满足条件覆盖准则,但也不是完全测试,选项 C错误。12.(分数:1.00)A.p-nextB.p C.sD.s-next解析:解析 在主函数中,定义了一个结构体型指针变量 head,然后将函数 CreatList()的返回值赋给指针变量 head,从这里可知函数 CreatList()的返回值为 struct node*类型,所以第 48处的空白应该填struct node*,故 48题选项 C正确;在函数 Creat List()中首先定义 3个结构体型指针变量 h
42、,p 和 q。然后调用 malloc()函数分配了一个结点空间,并让指针 h指向它,开始指针 p、q 和 h都指向它,然后调用一个 while循环语句,当到达字符串数组 s的末尾结束循环,在每次循环中,分配一个结点空间,并让p指向它,然后让该结点的 data域的值等于字符串指针 s所指的值,因此第 49题的正确答案为选项 A:接下来让指针 q所指结点的 next指针指向结点 p,然后让指针 q指向该指针的所指结点的下一个结点即p,所以第 50个空白处应该填 p,选择 B。故第 48题 4个选项中选项 C符合题意;第 49题 4个选项中选项 A符合题意;第 50题 4个选项中选项 B符合题意。1
43、3.有以下程序段:int m=0,n=0;char c=a;scanf(“%d%c%d“,printf(“%d,%c,%d/n“,m,c,n);若从键盘上输入 10A10回车,则输出结果是( )。(分数:1.00)A.10,A,10 B.10,a,10C.10,a,0D.10,A,0解析:解析 格式字符%d 用于输入整数,%c 用于输入字符。在输入时,系统把第一个 10作为整数 10赋给 m,把随后的 A作为字符赋值给 c,后面的 10作为整数赋给 n,最后输出的结果为 10,A,10 所以,A选项为所选。14.有以下程序:main()char s=“ABCD“, *p;for( p=s+1;
44、ps+4;p+) printf(“%s/n“,p);程序运行后的输出结果是( )。(分数:1.00)A.ABCD BCD CD DB.ABCDC.BCDD.BCDCDD 解析:解析 本题中首先定义一个字符数组 s,并将字符串“ABCD“存到数组 s中,定义了一个字符指针变量 p,在接下来 for循环中,循环体共执行了三次,第一次 p指向 s1,所以此时输出的 p所指字符串的值为 BCD,第二次循环 p指向 s2,此时输出 p所指的字符串的值为 CD,第三次循环 p指向 s3,此时输出的 p所指的字符串的值为 D。所以,4 个选项中选项 D符合题意。15.以下能正确定义二维数组的是( )。(分数
45、:1.00)A.int a3;B.int a3=2*3; C.int a3=;D.int a23=1,2,3,4;解析:解析 选项 A中省略了第 1维的长度,但没有指定初始化列表,系统无法确定第 1维的长度,故编译不会通过;C 语言中,初始化列表不能为空,所以选项 C错误;选项 D中定义了一个 2行 3列的数组,而在初始化列表中包含了 3个大括号,即初始化 3行值,编译不会通过,故选项 D错误。所以,4 个选项中选项 B符合题意。16.有以下程序:main()int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf(“%d
46、%d %3.1f %3.1f/n“,a,c,f,x);程序运行后的输出结果是( )。(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5 C.1 65 1.0 6.5D.2 65 1.5 6.5解析:解析 主函数中先定义了一个整型变量 a,一个字符变量 c并赋初值 10,一个浮点型变量 f并赋初值 100.00和一个 double型 x,接着执行 a=f/=c*=(x=6.5),该语句从右向左计算,先把 6.5赋值给x(该括号表达式的值也为 6.5),此时 x的值变为 6.5,然后执行 c*=(x=6.5)相当于执行 c=c*(x=6.5),此时 c的值为 65,接着向左执行
47、 f/c*=(x=6.5),语句相当于执行 f=f/c,所以 f的值为 100/651.538。接着向最右边执行“a=f”,由于 a是整型变量,所以 a最后去 f的整数部分为 1。程序最后输出的a、c、f 和 x的值(f 和 x只保留小数点后面 1位)分别为 1、65、1.5、6.5。所以,4 个选项中选项 B符合题意。17.(分数:1.00)A.*s B.SC.*s+D.(*s)+解析:18.模块化程序设计主要强调的是( )。(分数:1.00)A.程序的规模要大B.对程序进行分解 C.程序的执行效率D.程序的可移植性解析:解析 模块化设计是指把一个大程序按人们能理解的大小规模进行分解。19.结构化程序由 3种基本结构组成,3 种基本结构组成的算法( )。(分数:1.00)A.可以完成任何复杂的任务 B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务解析:解析