1、国家二级( C语言)笔试模拟试卷 28及答案与解析 1 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算以及 ( )。 ( A)数据的存储结构 ( B)计算方法 ( C)数据映象 ( D)逻辑存储 2 串的长度是 ( )。 ( A)串中不同字符的个数 ( B)串中不同字母的个数 ( C)串中所含字符的个数且字符个数大于 0 ( D)串中所含字符的个数 3 在计算机中,算法是指 ( )。 ( A)加工方法 ( B)解题方案的准确而完整的描述 ( C)排序方法 ( D)查询方法 4 以下不属于面向对象的基本特点的是 ( )。 ( A)分类性 ( B)多态性 ( C)继
2、承性 ( D)封装性 5 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作 ( )。 ( A)软件投机 ( B)软件危机 ( C)软件工程 ( D)软件产生 6 下面不属于软件设计原则的是 ( )。 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 7 开发大型软件时,产生困难的根本原因是 ( )。 ( A)大系统的复杂性 ( B)人员知识 不足 ( C)客观世界千变万化 ( D)时间紧、任务重 8 下列 SQL语句中,用于修改表结构的是 ( )。 ( A) ALTER ( B) CREATE ( C) UPDATE ( D) INSERT 9 数据库、数据库系
3、统和数据库管理系统之间的关系是 ( )。 ( A)数据库包括数据库系统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D)三者没有明显的包含关系 10 关系模型允许定义三类数据约束,下列不属于数据约束的是 ( )。 ( A)实体完整性约束 ( B)参照完整性约束 ( C)域完整性约束 ( D)用户自定义的完整性约束 11 下列选项中,不能用作标识符的是 ( )。 ( A) _1234_ ( B) _1_2 ( C) int_2_ ( D) 2_int_ 12 以下定义语句中正确的是 ( )。 ( A) char a=A b=B;
4、 ( B) float a=b=10.0; ( C) int a=10, *b= 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 h main(
5、 ) char str = “link list“; struet node * head; head = CreatList (str); ( A) char * ( B) struet node ( C) struct node * ( D) char 16 有以下程序: #include stdio. h main( ) int m =3,n =4,x; x= -m+; x=x+8/+n; prinff(“ % d n“ ,x); 程序运行 后的输出结果是 ( )。 ( A) 3 ( B) 5 ( C) -1 ( D) -2 17 有以下程序: #include stdio. h mai
6、n ( ) char a :a,b; printf( “% c,“ , + + a); printf(“%c n“ ,b =a+); 程序运行后的输出结果是 ( )。 ( A) b, b ( B) b, c ( C) a, b ( D) a, c 18 结构化程序由三种基本结构组成,三种基本结构组成的算法 ( )。 ( A)可以完成任何复杂的任务 ( B)只能完成部分复杂的任务 ( C)只能完成符合结构化的任务 ( D)只能完成一些简单的任务 19 有以下程序: #include stdio. h main ( ) int x = 1,3,5,7,2,4,6,0 ,i,j,k; for(i =
7、0;i 3;i + ) for (j =2;j = i;j ) if( xj + 1 xj ) k = xj ;xj = xj + 1 ;xj + 1 = k; for (i =0;i 3;i+) for(j =4;j 7-i;j +) if(xj xj+1) k=xj;xj =xj+1;xj+1 =k; for (i=0;i 8;i +) printf(“%d“ ,xi); prinff(“n“ );程序运行后的输出结果是 ( )。 ( A) 75310246 ( B) 1234567 ( C) 76310462 ( D) 13570246 20 有定义语句 doubld a, b; int
8、 w; long c;若各变量已正确赋值,则下列选项中正确的表达式是 ( )。 ( A) a=a+b=b+ ( B) w%(int) a+b) ( C) (c+w)%(int)a ( D) w=a=b; 21 对表达式 for(表达式 1;表达式 3)可理解为 ( )。 ( A) for(表达式 1;0;表达式 3) ( B) for(表达式 1;1;表达式 3) ( C) for(表达式 1;表达式 1;表达式 3) ( D) for(表达式 1;表达式 3;表达式 3) 22 以下程序的输出结果是 ( )。 #include stdio.h main() int a,i;a=0; for(
9、i=1;i 5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(“%dn“,a); ( A) 31 ( B) 13 ( C) 10 ( D) 20 23 若有如下语句: int x=3; do printf(“%dn“,x-=2); wbile(! ( -x);则上面程序段 ( )。 ( A)输出的是 1 ( B)输出的是 1和 -2 ( C)输出的是 3和 0 ( D)是死循环 24 判断 char型变量 cl是否为大写字母的正确表达式是 ( )。 ( A) =cl =Z ( B) (c
10、l = ) scanf(“%d%d“, while(_) if(a b) t=a;a=b;b=t; printf(“%d,%dn“,a,b); scanf(“%d%d“, ( A) ! a=b ( B) a! =b ( C) a= =b ( D) a=b 26 以下对 C语言函数的有关描述中,正确的是 ( )。 ( A)在 C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参 ( B) C函数既可以嵌套定义又可以递归调用 ( C)函数必须有返回值,否则不能使用函数 ( D)函数必须有返回值,返回值类型不定 27 有以下程序: #include stdio.h void fun(i
11、nt a,int b,int c) a=456,b=567,c=678; main() int x=10,y=20,z=30; fun(x,y,z); printf(“%d,%d,%dn“,x,y,z); 此程序的输出结果是 ( )。 ( A) 30,20,10 ( B) 10,20,30 ( C) 456,567,678 ( D) 678,567,456 28 有如下程序段: int *p,a=10,b=1; p= a= *p+b;执行该程序段后, a的值为( )。 ( A) 12 ( B) 11 ( C) 10 ( D)编译出错 29 有如下说明: int a10=1,2,3,4,5,6,
12、7,8,9,10,*p=a;则数值为 9的表达式是( )。 ( A) *p+9 ( B) *(p+8) ( C) *p+=9 ( D) p+8 30 以下程序调用 scanf函数给变量 a输入数值的方法是错误的,其 错误原因是( )。 #include stdio.h main() int *p,*q,a,b; p= printf(“input a:“); scanf(“%d“,*p); ( A) *p表示的是指针变量 p的地址 ( B) *p表示的是变量 a的值,而不是变量 a的地址 ( C) *p表示的是指针变量 p的值 ( D) *p只能用来说明 p是一个指针变量 31 对以下说明语句的
13、正确理解是 ( )。 int a10=6,7,8,9,10; ( A)将 5个初值依次赋给 a1至 a5 ( B)将 5个初值依次赋给 a0至 a4 ( C)将 5个初值依次赋给 a6至 a10 ( D)因为数组长度与初值的个数不相同,所以此语句不正确 32 若有说明: int a4=0,0;则下面不正确的叙述是 ( )。 ( A)数组 a的每个元素都可得到初值 0 ( B)二维数组 a的第一维大小为 1 ( C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 ( D)只有元素 a00和 a01可得到初值,其余元素均得不到确定的初值 33 有以下程序: #include
14、 stdio.h #include string.h main() char a=a,b,c,d,e,f,g,h,0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%dn“,i,j); 程序运行后的输出结果是 ( )。 ( A) 9, 9 ( B) 8, 9 ( C) 1, 8 ( D) 9, 8 34 假定 int类型变量占用两个字节,若有定义: int x10=0,2,4;则数组 x在内存中所占字节数是 ( )。 ( A) 3 ( B) 6 ( C) 10 ( D) 20 35 已知学生记录描述为: struct student int no
15、; char name20,sex; struct int year,month,day; birth; ; struct student s; 设变量 s中的 “生日 ”是 “1984年 11月 12日 ”,对 “birth”正确赋值的程序段是 ( )。 ( A) year=1984;month=11;day=12; ( B) s.year=1984;s.month=11;s.day=12; ( C) birth.year=1984;birth.month=11;birth.day=12; ( D) s.birth.year=1984;s.birth.month=11;s.birth.day
16、=12; 36 以下程序的运行结果是 ( )。 #include stdio.h #define MIN(x,y) (x) (y)? (x):(y) main() int i=10,j=15,k; k=10*MIN(i,j); printf(“%dn“,k); ( A) 10 ( B) 15 ( C) 100 ( D) 150 37 有如下程序: #include stdio.h int func(int a,int b) return(a+b): main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%dn“,r); 该程序的输出结果是
17、 ( )。 ( A) 12 ( B) 13 ( C) 14 ( D) 15 38 设有以下说明语句: typedef struct int n; char ch8; PER;则下面叙述中正确的是 ( )。 ( A) PER是结构体变量名 ( B) PER是结构体类型名 ( C) typedef struct是结构体类型 ( D) struct是结构体类型名 39 有如下定义: struct person char name9;int age; struct person class10=“John“,17,“paul“,19,“Mary“,18,“Adam“,16; 根据上述定义,能输出字母M
18、的语句是 ( )。 ( A) printf(“%cn“,class3.name); ( B) printf(“%cn“,class3.name1); ( C) printf(“%cn“,class2.name1); ( D) printf(“%cn“,class2.name0); 40 以下程序执行后 x的值是 ( )。 #include stdio.h main() int x,y=252,i=386,*m= x=(z= =m); printf(“%d“,x); ( A) 252 ( B) 1 ( C) 0 ( D)运行时出错, x无定值 41 阅读下列程序,当运行程序时,输入 asd af
19、 aa z67,则输出为 ( )。 #include sldio.h int fun (char *str) int i,j=0; for(i=0;stri! =0;i+) if(stri! =“) strj+=stri; strj=0; main() char str81; int n; printf(“Input a string:“); gets(str); fun(str); printf(“%sn“,str); ( A) asdafaaz67 ( B) asd af aa z67 ( C) asd ( D) z67 42 下列程序的输出结果是 ( )。 #include stdio.
20、h struct abc int a, b, c, s; main() struct abc s2=1,2,3,4,5,6; int t; t=s0.a+s1.b; printf(“%dn“,t); ( A) 5 ( B) 6 ( C) 7 ( D) 8 43 有以下函数: fun(char *p) return p; 该函数的返回值是 ( )。 ( A)无确切值 ( B)形参 p中存放的地址值 ( C)一个临时存储单元的地址 ( D)形参 p自身的地址值 44 若有定义: char *st=“how are you“;下列程序段中正确的是 ( )。 ( A) char a11, *p; st
21、rcpy(p=a+1, ( B) char a11; strcpy(+a, st); ( C) char a11; strcpy(a, st); ( D) char a, *p; strcpy(p= 45 下列程序的运行结果是 ( )。 #include stdio.h void fun(int *a, int *b) int *k; k=a; a=b; b=k; main() int a=3,b=6, *x= fun(x,y); printf(“%d%d“,a,b); ( A) 6 3 ( B) 3 6 ( C)编译出错 ( D) 0 0 46 表达式 a b|(c ( B) fwrite(
22、fp,size,count,buffer); ( C) fwrite(fp,count,size,buffer); ( D) fwrite(buffer,size,count,fp); 48 C语言中,文件组成的基本单位为 ( )。 ( A)记录 ( B)数据行 ( C)数据块 ( D)字符序列 49 请选出下面正确的程序段 ( )。 ( A) int *s; scanf(“%d“,s); ( B) int *s,k; *s=100; ( C) int *s,k; char *p, c; s= p= *p=a; ( D) int *s,k; char *p, c; s= p= s=p; *s=
23、1; 50 若有下面的说明和定义,则 sizeof(struct aa)的值是 ( )。 struct aa int r1; double r2; float r3; union uuchar u15;long u22;ua; mya; ( A) 30 ( B) 29 ( C) 24 ( D) 22 51 数据结构分为逻辑结构与存储结构,线性链表属于【 】。 52 在面向对象方法中,类之间共享属性和操作的机制称为【 】。 53 耦合和内聚是评价模块独立性的两个主要标准,其中【 】反映了模块内各成分之间的联系。 54 一个项目有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实
24、体 “项目 ”的联系属于【 】的联系。 55 数据库设计分为以下六个设计阶段:需求分析阶段、【 】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 56 设 y是 int型变量,请写出 y为奇数的关系表达式【 】。 57 设 int a=5, b=6,表达式 (+a= =b-)? +a: -b的值是【 】。 58 下列程序的输出结果是【 】。 #include stdio h main() char b=“Hello you“; b5 =0; printf(“%sn“, b); 59 当调用函数时,实参是一个数组名,则向函数传递的是【 】。 60 以下程序段的输出结果是【 】。 int
25、 a=1234; printf(“%2dn“, a); 61 用高级语言编写的程序称为【 】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。 62 以下程序的输出结果是【 】。 #include stdio h main() int a=0; a+ =(a=8); printf(“%dn“, a); 63 下列程序的运行结果是【 】。 #include stdio.h #define M 100 void fun(int m, int *a, int *n) int i, j=0; for(i=1; i =m; i+) if(i%7=0|i
26、%11=0) aj+=i; *n=j; main() int aaM, n, k; fun(10, aa, 【 】 ;ss+) if(*ss=c) i+; return i; main() char aM, ch; printf(“nPlease enter a string: “); gets(a); printf(“nPlease enterachar: “); ch=getchar(); printf(“nThe number of the char is: %dn“, fun(a, ch); 65 下面的程序把从终端读入的文本 (用 作为文本结束标志 )输出到一个名为 bi.dat的新
27、文件中,请填空。 #include stdio h #include stdlib h FILE*fp; main() charch; if(fp=fopen(【 】 )=NULL)exit(0); while(ch=getchar()!=) fputc(ch, fp); fclose(fp); 66 设有如下宏定义: #define MYSW AP(z, x, y) z=x; x=y; y=z; 以下程序段通过宏调用实现变量 a, b内容交换,请填空。 float a=5, b=16, c; MYSWAP(【 】, a, b); 67 函数 void fun(float *sn, int n
28、)的功能是:根据以下公式计算 s,计算结果通过形参指 针 sn传回; n通过形参传入, n的值大于或等于 0。请填空。 void fun(float *sn, int n) float s=0.0, w, f=-1.0; int i; for(i=0; i =n; i+) f=【 】 * f; w=f/(2*i+1); s+=w; 【 】 =s; 68 函数 fun的功能是:根据以下公式求 p的值,结果由函数值返回。 m与 n为两个正数,且要求 m n。 例如: m=12, n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补 充完整。 #include
29、 stdio h float fun(int m, int n) int i; double p=1.0; for(i=1; i=m; i+) 【 】 ; for(i=1; i =n; i+) 【 】 ; for(i=1; i =m-n; i+) p=p/i; return p; main() printf(“p=%fn“, fun(12, 8); 国家二级( C语言)笔试模拟试卷 28答案与解析 1 【正确答案】 A 【试题解析】 数据结构是研究数据元素及其之 间的相互关系和数据运算的一门学科,它包含三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。 2 【正确答案】 D 【试题解析】
30、 串的长度是指串中字符的个数,且其字符个数可以为 0。 3 【正确答案】 B 【试题解析】 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。 4 【正确答案】 A 【试题解析】 封装性、继承性、多态性是面向对象的三大特点。 5 【正确答案】 B 【试题解析】 软件工程概念的出现源自软件 危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。 6 【正确答案】 C 【试题解析】 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件
31、设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。 7 【正确答案】 A 【试题解析】 软件的显著特点是规模庞大,复杂度超线性增长。在开发大型软件时,要保证高质量极端复杂困难,不仅涉及技术问题 ,更重要的是必须要有严格而科学的管理。 8 【正确答案】 A 【试题解析】 在 SQL语句中,创建用 CREATE,删除用 DROP,改变用ALTER,后面跟类型和名字,附加子句。 9 【正确答案】 B 【试题解析】 数据库系统包括数据库和数据库管理系统。 10 【正确答案】 C 【试题解析】 关系模型允许定义三类数据约束,它们是实体完整性约束、参照完整性约束
32、及用户自定义的完整性约束。前两种完整性约束由关系数据库系统支持,用户自定义的完整性约束则由关系数据库系统提供完整性约束语言,用 户利用该语言给出约束条件,运行时由系统自动检查。 11 【正确答案】 D 【试题解析】 标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 12 【正确答案】 C 【试题解析】 选项 A)中,字符型变量 a, b中间缺少逗号;如果对几个变量赋以同一个初值,不能在定义变量时进行,应写成: float a=10.0, b=10.0;所以选项 B)不正确;选项 D)中,执行 b=i+) for(j=2; j i;j-) if(xj+1, xj)k=
33、xj;xj;xj+1); xj+1=k; 该段程序的作用是将数组元素 x0 x3中的数由大到小排列,得到 x7, 5,3, 1, 2, 4, 6, 0。 for(i=0; i 3;i+) for(j=4; j 7-i;j+) if(xj xj+1) k=xj; xj=xj+1; xj+1=k; 该段程序的作用是将数组元素 x4 x7中的数由小到大排列,得到 x=7, 5,3, 1, 0, 2, 4, 6。因此输出结果为 75310246。 20 【正确答案】 C 【试题解析】 赋值运算符的左边只能是变量,不能是表达式,选项 A)错误;由于 “%”两边表达式值的类型必须为整 型,所以选项 B)错
34、误;题目要求的是正确的表达式,而表达式后面不能有 “; ”,选项 D)错误。 21 【正确答案】 B 【试题解析】 本题中,省略了 for语句的第二个表达式,表示第二个表达式始终为真,即为 1。 22 【正确答案】 A 【试题解析】 多分支选择 switch语句的一般形式为: switch(表达式 ) case常量表达式 1:语句 1; case常量表达式 2:语句 2; case常量表达式 n:语句 n; default:语句 n+1; 其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,不再进行判断,继续执行后面所有 cas
35、e后的语句。如果表达式的值与所有 case后的常量表达式均不相同时,则执行 default后的语句。 23 【正确答案】 B 【试题解析】 do - while语句的一般格式为: do 循环体语句 while(表达式 ); 先执行循环体语句一次,再判断表达式的值,若值为真,则继续执行循环,否则终止循环。本题 中,先执行 printf(“%dn“,x- =2),值为 x=x-2,即为 1。然后判断表达式的值, !(-x)为真, x=0,继续循环。再次执行循环体语句后, x=-2,此时表达式 !(-x)的值为 0,结束循环。 24 【正确答案】 D 【试题解析】 字符型数据在计算机内部是以 ASC
36、II码存储的,英文大写字母和小写字母在 ASCII码表中都是连续的。大写字母 A到 Z是从 65到 90,所以只要变量 c1大于 A并且小于 Z就能保证其为大写字母。 A)、 C)表示形式错误, B)的字符 A、 Z没有用单引号括起来。 25 【正确答案】 B 【试题解析】 根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等 (相等时结束循环 ),也即只有满足这一条件时,才对两数进行排序输出操作,由此得出循环的控制表达式应该为 a!=b。 26 【正确答案】 A 【试题解析】 C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返
37、回值,则返回值类型必须确定。 27 【正确答案】 B 【试题解析】 本题考查函数中变量的作用范围,在主函数中给变量 x, y, z赋值,然后将 其作为实参传递给函数 fun,在函数 fun中虽然改变了这三个变量的值,但两个函数中的 x, y, z只是同名的局部变量,互不影响,所以调用函数 fun后,主函数中 x, y, z的值并未改变,即变量作形参时,其值的改变不能影响实参的值。 28 【正确答案】 B 【试题解析】 p=a=*p+b表达式的含义是指针变量 p所指内存的值 10与 b的和赋给 a。 29 【正确答案】 B 【试题解析】 数组元素 a0可以用表达式。 (p+0),即 *p来引用;
38、数组元素 a1可以用表达式 *(p+1)来引用,在这里, p+1的值就是数组元素 a1的地址, *(p+1)就代表存储单元 a1,这里的一对圆括号不可少。同样,数组元素 a9可以用表达式。 (p+9)引用。因此,当指针变量 p指向 a数组的起始地址时,若 0i 10,则数组元素 ai可以用 *(p+i)来表示。 30 【正确答案】 B 【试题解析】 本题经过定义语句和赋值后, p表示的是变量 a的地址, *p表示的是变量 a的值。 31 【正确答案】 B 【试题解析】 本题中,表达式将 5个初值分别赋给 a0至 a4,系统自动给后面的元素 a5至 a9赋 0。 32 【正确答案】 D 【试题解
39、析】 本题考查二维数组的基本概念。对于二维数组,只可以省略第一个括号中的常量表达式,而不能省略第二个括号中的常量表达式。数组中未赋初值的元素系统会自动对它们赋初值 0。 33 【正确答案】 D 【试题解析】 sizeof是求字节运算符,在字符数组 a中, “0”也作为字节保存,是 a数组的一个成员,所以 sizeof(a)的值应为 9; strlen是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括 “0”在内,所以 strlen(a)的值为 8。 34 【正确答案】 D 【试题解析】 x数组共有 10个元素,在花括号内只提供 3个初值,这表示只给前面的 3个元素赋值,后 7个元素的
40、值为 0,所以,一共有 20个字节。 35 【正确答案】 D 【试题解析】 本题考查结构体变量的基本概念。引用结构体成员的方式为: 结构体变量名成员名 “.”是 “成员运算符 ”(分量运算符 ),如果成员本身又是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行赋值或存取以及 运算,所以选项 D)正确。 36 【正确答案】 B 【试题解析】 该题考查函数的宏定义及三目运算符。表达式 10*MIN(i,j)利用宏展开后为: 10*i j? i:j,即 100 15? 10:15,其值为 15,然后将 15赋给 k。 37 【正确答案】 D 【试题解析】
41、在表达式 r=func(func(x,y),z)中, func(x,y)是第一次调用函数,它的返回值 7作为 func函数第二次调用的实参,结果为 15。 38 【正确答案】 B 【试题解析】 本题用 typedef声明新的类 型名 PER来代替已有的类型名, PER代表上面指定的一个结构体类型,此时,也可以用 PER来定义变量。 39 【正确答案】 D 【试题解析】 本题的关键是弄清楚给结构体数组赋初值的问题。初始值将按数组的各个元素在内存中的存放次序逐个地赋给各元素。结构体数组的各个元素在内存中的存放次序是: class0.name,class0.age,class1.name,class
42、1.age, ,由此可知,包含字符 “M”的字符串 “Mary”赋值给了元素 class2.name,则与字符 “M”相对应 的表达式是 class2.name0。 40 【正确答案】 C 【试题解析】 指针变量 m和 z分别指向整型变量 y, i,所以这两个指针变量中存储的地址是不同的,变量 x接受的是一个关系运算结果 0(因为 m和 z两个地址是不同的 ),所以 x为 0。 41 【正确答案】 A 【试题解析】 本题题意是删除字符串中所有空格。由于 C语言中没有直接删除字符的操作,所以删除字符的操作都是采用 “留下 ”字符的算法来实现。从串头str0到串尾逐一比较,判断其是否为空格,若不是
43、空格,则将其保存在 strj中,最 后加串结束符 “0”。 42 【正确答案】 B 【试题解析】 在本题中, s0.a=1,s1.b=5,所以输出结果为 6。 43 【正确答案】 B 【试题解析】 return中返回的是指针 p的值,也就是形参 p中存放的地址值。 44 【正确答案】 A 【试题解析】 C语言不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组,例如,已定义字符数组 str1和 str2,那么 str1=“China“和 str1=str2都是错误的。通常使用 strcpy函数进行字符串的赋值,例如: strcpy(str1,“China“)或strcpy(str1,st
44、r2)。需要注意的是,字符数组 str1的长度不应小于字符串 “China”或字符数组 str2的长度,函数 strcpy的第一个参数必须用数组名的形式,如 str1,第二个参数可以是字符数组名,也可以是字符串常量。 45 【正确答案】 B 【试题解析】 程序看上去是要实现交换两个指针的值,但是 C语言中实参变量和形参变量之间的数据传递是单向的 “值传递 ”,指针变量做函数参数也要遵循这一规则。调用函数不能企图通过改变形参指针的值而使实参指针 的值也改变。所以本题的输出结果是 36。 46 【正确答案】 D 【试题解析】 括号的优先级最高。 47 【正确答案】 D 【试题解析】 fwrite的
45、形式是 fwrite(buffer, size, count, fp), buffer是准备输出的数据块的起始地址, size是每个数据块的字节数, count用来指定每写一次或输出的数据块, fp为文件指针。 48 【正确答案】 D 【试题解析】 C语言处理文件的方法是将文件以数据流的形式处理,不是将文件作为一个结构集合来处理,所以, C语言中文 件的组织方式是无结构的字符序列方式。 49 【正确答案】 C 【试题解析】 本题的选项 A)和 B)犯了一个同样的错误,即指针变量 s定义后并没有指向具体的变量。也就是说, s中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此
46、不能进行赋值操作。另外,在选项 D)中, s是 int型指针变量, p是 char型指针变量,指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量 p的值赋给整型指针变量 s。 50 【正确答案】 D 【试题解析】 struct aa的字节数等于结构体中除共 用体的成员所占存储单元之和+共用体的长度,所以计算结果为 2+8+4+8=22。 51 【正确答案】 存储结构 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 52 【正确答案】 继承 【试题解析】 类是面向对象语言中必备的程序语言结构,用来实现抽象数
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1