C语言第一套模拟试题_第1页
C语言第一套模拟试题_第2页
C语言第一套模拟试题_第3页
C语言第一套模拟试题_第4页
C语言第一套模拟试题_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一套模拟试题 1.以下数据结构中不属于线性数据结构的是_。 A、队列 B、线性表 C、二叉树 D、栈 2. 结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是_。A、可行性分析 B、需求分析C、详细设计 D、程序编码3. 结构化程序设计主要强调的是_。A、程序的规模B、程序的易读性C、程序的执行效率D、程序的可移植性4. 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_。A、概要设计B、详细设计C、可行性分析D、需求分析5. 下列关于栈的叙述中正确的是_。A、在栈中只能插入数据B、在栈中只能删除数据C、栈是先进先出的线性表D、栈是先进后出的线性表 6

2、. 下面不属于软件设计原则的是_。A、抽象B、模块化C、自底向上D、信息隐蔽7. 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。A、N+1B、N C、(N+1)/2D、N/28. 视图设计一般有3种设计次序,下列不属于视图设计的是_。A、自顶向下B、由外向内C、由内向外D、自底向上 9. 下列有关数据库的描述,正确的是_。A、数据库是一个DBF文件 B、数据库是一个关系C、数据库是一个结构化的数据集合D、数据库是一组文件10. 下列说法中,不属于数据模型所描述的内容的是_。A、数据结构B、数据操作C、数据查询D、数据约束 11. 以下叙述中正确的是_。A、C程序中注释部分可

3、以出现在程序中任意合适的地方B、花括号""和""只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名D、分号是C语句之间的分隔符,不是语句的一部分12. 以下选项中可作为C语言合法整数的是_。A、10110BB、0386C、0XffaD、x2a213. 以下不能定义为用户标识符的是_。A、scanf B、VoidC、_3com_D、int14. 有以下程序main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d %d %

4、3.1f %3.1fn",a,c,f,x);程序运行后的输出结果是_。A、1 65 1 6.5B、1 65 1.5 6.5C、1 65 1.0 6.5D、2 65 1.5 6.515. 以下选项中非法的表达式是_。A、0<=x<100B、i=j=0C、(char)(65+3)D、x+1=x+116. 有以下程序main() int a=1,b=2,m=0,n=0,k; k=(n=b>a)|(m=a<b); printf("%d,%dn",k,m);程序运行后的输出结果是_。A、0,0B、0,1C、1,0D、1,117. 有定义语句:int

5、x,y;。若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是_。A、11 12B、11,12C、11, 12D、11,1218. 设有如下程序段int x=2002,y=2003;printf("%dn",(x,y);则以下叙述中正确的是_。A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出B、运行时产生出错信息C、输出值为2002D、输出值为200319. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的

6、是_。A、x=x*100+0.5/100.0;B、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0;D、x=(x/100+0.5)/100.0;20. 有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是_。A、if (c<a) x=1; else if (b<a) x=2; else x=3; B、if (a<3) x=3; else if (a<2) x=2; else x=1; C、if (a<3) x=3; if (a<2) x=2; if (a<1) x=1;

7、 D、if (a<b) x=b; if (b<c) x=c; if (c<a) x=a;21. 有以下程序:main() int s=0,a=1,n; scanf("%d",&n); do s+=1; a=a-2; while(a!=n); printf("%dn",s);若要使程序的输出值为2,则应该从键盘给n输入的值是_。A、-1B、-3C、-5D、022. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。s=a;for(b=1;b<=c;b+) s=s+1;则与上述程序段功能等价的

8、赋值语句是_。A、s=a+b;B、s=a+c;C、s=s+c;D、s=b+c;23. 有以下程序:main() int k=4,n=0; for( ; n<k ; ) n+; if(n%3!=0) continue; k-; printf("%d,%dn",k,n);程序运行后的输出结果是_。A、1,1B、2,2C、3,3D、4,424. 要求以下程序的功能是计算:s=1+1/2+1/3+1/10。main() int n; float s; s=1.0; for(n=10;n>1;n-) s=s+1/n; printf("%6.4fn",s

9、);程序运行后输出结果错误,导致错误结果的程序行是_。A、s=1.0;B、for(n=10;n>1;n-)C、s=s+1/n;D、printf("%6.4fn",s);25. 已定义ch为字符型变量,以下赋值语句中错误的是_。A、ch=''B、ch=62+3;C、ch=NULL;D、ch='xaa'26. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_。A、函数调用可以作为独立的语句存在B、函数调用可以作为一个函数的实参C、函数调用可以出现在表达式中D、函数调用可以作为一个函数的形参27. 有以下函数定义:void fu

10、n(int n, double x) 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_。A、fun(int y,double m);B、k=fun(10,12.5);C、fun(x,n);D、void fun(n,x);28. 有以下程序void fun(char *a, char *b) a=b; (*a)+; main() char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%cn",c1,c2);程序运行后的输出结果是_

11、。A、AbB、aaC、AaD、Bb29. 若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是_。A、int *i=NULL; scanf("%d",i);B、float *f=NULL; *f=10.5;C、char t='m',*c=&t; *c=&t;D、long *L; L='0'30. 有以下程序#include <stdio.h>main() printf("%dn",NULL); 程序运行后的输出结果是_。A、0B、1C、-1D、NULL没定义,出错31. 已

12、定义c为字符型变量,则下列语句中正确的是_。A、c='97'B、c="97"C、c=97;D、c="a"32. 以下不能正确定义二维数组的选项是_。A、int a22=1,2;B、int a2=1,2,3,4;C、int a22=1,2,3D、int a2=1,2,3,433. 以下选项中不能正确把cl定义成结构体变量的是_。1、typedef struct int red; int green; int blue; COLOR; COLOR cl;2、struct color cl int red; int green; int blu

13、e; ;3、struct color int red; int green; int blue; cl;4、struct int red; int green; int blue;A、1B、2C、3D、434. 以下能正确定义一维数组的选项是_。A、int numB、#define N 100 int numNC、int num0.100D、int N=100; int numN35. 下列选项中正确的语句组是_。A、char s8; s="Beijing"B、char *s; s="Beijing"C、char s8; s="Beijing&

14、quot;D、char *s; s="Beijing" 36. 已定义以下函数:fun(int *p) return *p; 该函数的返回值是_。A、不确定的值B、形参p中存放的值C、形参p所指存储单元中的值D、形参p的地址值37. 下列函数定义中,会出现编译错误的是_。A、max(int x,int y,int *z) *z=x>y ? x:y;B、int max(int x,y) int z; z=x>y ? x:y; return z;C、max(int x,int y) int z; z=x>y?x:y; return(z); D、int max(

15、int x,int y) return(x>y?x:y); 38. 有以下程序#include <stdio.h>#define F(x,y) (x)*(y)main() int a=3,b=4; printf("%dn",F(a+,b+);程序运行后的输出结果是_。A、12B、15C、16D、2039. 有以下程序fun(int a, int b) if(a>b) return(a); else return(b);main() int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); printf("%dn&quo

16、t;,r);程序运行后的输出结果是_。A、3B、6C、8D、1240. 若有定义:int *p3;,则以下叙述中正确的是_。A、定义了一个基类型为int的指针变量p,该变量具有三个指针B、定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C、定义了一个名为*p的整型数组,该数组含有三个int类型元素D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素41. 以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#include <stdio.h>#include <string.h>char

17、 *scmp(char*s1,char*s2) if (strcmp(s1,s2)<0) return(s1); else return(s2);main() int i; char string20,str320; for(i=0;i<3;i+) gets(stri); strcpy(string,scmp(str0,str1);/*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str2); printf("%sn",string);若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为A、abcdB

18、、abbaC、abcD、baca42. 有以下程序:struct s int x,y; data2=10,100,20,200;main() struct s *p=data; printf("%dn",+(p->x);程序运行后的输出结果是_。A、10B、11C、20D、2143. 有以下程序段main() int a=5,*b,*c; c=&b; b=&a; 程序在执行了c=&b;b=&a;语句后,表达式:*c的值是_。A、变量a的地址B、变量b中的值C、变量a中的值D、变量b的地址44. 有以下程序#include <str

19、ing.h>main() char str20="Hello","Beijing",*p=str; printf("%dn",strlen(p+20);程序运行后的输出结果是_。A、0B、5C、7D、2045. 已定义以下函数fun(char *p2, char *p1) while(*p2=*p1)!='0')p1+;p2+; 函数的功能是_。A、将p1所指字符串复制到p2所指内存空间B、将p1所指字符串的地址赋给指针p2C、对p1和p2两个指针所指字符串进行比较D、检查p1和p2两个指针所指字符串中是否有&#

20、39;0'46. 有以下程序main() int x=3, y=2, z=1; printf("%dn",x/y&z);程序运行后的输出结果是_。A、3B、2C、1D、047. 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为_。A、0B、1C、-1D、一个非0值48. 下列关于c语言数据文件的叙述中正确的是_。A、文件由ASCII码字符序列组成,C语言只能读写文本文件B、文件由二进制数据序列组成,C语言只能读写二进制文件C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D、文件由数据流形式组成,可按数据的存

21、放形式分为二进制文件和文本文件49. 有以下程序main() int a33,*p,i; p=&a00; for(i=0;i<9;i+) pi=i+1; printf("%dn",a12);程序运行后的输出结果是_。A、3B、6C、9D、250有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。struct node int data; struct node *next;*p,*q,*r; data next data next data next p q r现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错

22、误的程序段是_。A、r->next=q;q->next=r->next;p->next=r;B、q->next=r->next;p->next=r;r->next=q;C、p->next=r;q->next=r->next;r->next=p;D、q->next=r->next;r->next=q;p->next=r; 51. 若按功能划分,软件测试的方法通常分为白盒测试方法和_测试方法。 52. 数据库系统的三级模式分别为_模式、内部级模式与外部级模式。 53在最坏情况下,冒泡排序的时间复杂度为_

23、。 54. 在面向对象方法中,信息隐蔽是通过对象的_性来实现的。 55. 关系模型的数据操纵即是建立在关系上的数据操纵,一般有_、增加、删除和修改四种操作。 56. 以下程序运行后的输出结果是_。main() int p=30; printf("%dn",(p/3>0 ? p/10 :p%3); 57. 以下程序运行后的输出结果是_。main() char m; m='B'+32; printf("%cn",m); 58. 以下程序运行后的输出结果是_。main() int a=1,b=3,c=5; if (c=a+b) print

24、f("yesn"); else printf("non"); 59. 以下程序运行后的输出结果是_。main() int i,m=0,n=0,k=0; for(i=9;i<=11;i+) switch(i/10) case 0: m+;n+;break; case 10: n+;break; default: k+;n+; printf("%d %d %dn",m,n,k); 60.执行以下程序后,输出"#"号的个数是_。#include <stdio.h>main() int i,j; for(

25、i=1; i<5;i+) for(j=2; j<=i; j+) putchar('#'); 61. 以下程序的功能是调用函数fun计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun ( int n) int m=0,f=1,i; for(i=1; i<=n; i+) m+=i*f; f=_; return m;main() printf("m=%dn",_); 62. 以下程序运行后的输出结果是_。main() int i,n=0,0,0,0,0; for(i=1;i<=4;i+) ni=ni-1*2+1; pri

26、ntf("%d ",ni); 63. 以下程序运行后的输出结果是_。(注:如果结果中含有回车,可加一空格写在一行,例如:1 1 11 1 11 1 1可以写成1 1 1 1 1 1 1 1 1)main() int i,j,a3=1,2,3,4,5,6,7,8,9; for(i=0;i<3;i+) for(j=i+1;j<3;j+) aji=0; for(i=0;i<3;i+) for(j=0;j<3;j+) printf("%d ",aij); printf("n"); 64. 以下程序运行后的输出结果是_。

27、int a=5;fun(int b) static int a=10; a+=b+; printf("%d ",a);main() int c=20; fun(c); a+=c+; printf("%dn",a); 65. 请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。_( double,double);main() double x,y; scanf("%1f%1f",&x,&y); printf(%1fn",max(x,y);double max(double a,double b) ret

28、urn(a>b ? a:b); 66. 以下程序运行后输入:3,abcde,则输出结果是_。#include <string.h>move(char *str, int n) char temp; int i; temp=strn-1; for(i=n-1;i>0;i-) stri=stri-1; str0=temp;main() char s50; int n,i,z; scanf("%d,%s",&n,s); z=strlen(s); for(i=1;i<=n;i+) move(s,z); printf("%sn"

29、;,s); 67. 以下程序运行后的输出结果是_。fun(int x) if(x/2>0) fun(x/2); printf("%d ",x);main() fun(6); 68. 已有定义如下:struct node int data; struct node *next;*p;以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。p=(struct node *)malloc(_); 69. 以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程

30、序后输出:123456。请填空。#include <stdio.h>#include <ctype.h>main() char s80,d80; int i,j; gets(s); for(i=j=0;si!='0'i+) if(_) dj=si; j+; dj='0' puts(d);第一套模拟试题参考答案及解析 1. 线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只

31、能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out);队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In First Out)。 本题答案为C。 2. 软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。 本题答案为B。 3. 结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程

32、序的正确性。 本题答案为B。 4. 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。 软件生命周期的主要活动阶段为: (1)可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。 (2)需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。 (3)软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给

33、出软件的结构、模块的划分、功能的分配以及处理流程。 (4)软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。 (5)软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。 (6)运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。 本题答案是D。 5. 栈是限定在一端进行插入与删除的线性表。 栈是按照"先进后出"的或后进先出的原则组织数据的,因此,栈也被称为"先进后出"表或"后进先出&qu

34、ot;表。 本题答案是D。 6. 在软件设计过程中,必须遵循软件工程的基本原则:这些原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可靠性。 本题答案为C。 7. 在进行顺序查找过程中,如果线性表中被查的元素是线性表中的最后一个,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。 本题答案为B。 8. 视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。 本题答案为B。 9. 数据库(Database,简称DB)是数

35、据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有"集成"、"共享"之特点。 本题答案为C。 10. 数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。 本题答案为C。 11. 本题的考查点是C程序设计的初步知识。 选项A,C程序中/*/表示注释部分,注释只是给人看的,对编译和运行不起作用,可以加在程序中任何位置,所以选项A是对的;

36、选项B,函数体是函数的主体,从左花括号开始,到与之匹配的右花括号结束。 选项C,一个C程序中必须有且只能有一个由“main”命名的主函数,其他函数由用户自行命名。 选项D,C语句是组成C程序的基本单位,具有独立的程序功能。所有的C语句都以分号结尾。 故本题答案为A。 12. 本题的考查点是C语言中的整型常数。 整型常数可以用十进制、八进制或十六进制表示,并分为有符号数、无符号数和长整数。由此可知选项A错; 选项B,用0386表示八进制错误,因为八进制数为0-7八个数字,含有8是不对的; 选项D,数字前加“0x”表示十六进制数,所以D也不对。 故本题答案为C。 13. 本题的考查点是用户标识符的

37、辨别。 标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。 标识符由132个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。 由上可知选项D是不对的,因为int是C语言中的关键字。 故本题答案为D。 14. 本题的考查点是复合的赋值运算符。 在赋值符“=”之前加上其它运算符,可以构成复合的运算符。运算方向为自右至左。 本题中先计算c的值,c=c*(x=6.5)=10*6.5=65;接下来计算f的值,f=f/c=100.0/65=1.5;最后计算a

38、的值,a=f,因为a为整数,取f的整数部分即为1。 故本题答案为B。 15. 本题的考查点是表达式的运用。 表达式是程序中使用最频繁、最大量出现的计算手段,程序中要求计算机进行某种计算或运算主要是通过表达式实现的。不同的表达式进行不同的运算,达到不同的目的。 选项A中,0<=x<100在C语言中是一个合法的关系表达式,但它并不代表数学式0<=x<100。在计算0<=x<100时,根据从左到右的结合性,先计算0<=x,其结果只能是0或1,然后再比较0<100或1<100。 选项B中,根据运算符的优先级,先判断j=0是否成立,其结果只能是0或1

39、,然后再将0或1赋给i。 选项C中,(char)(65+3)为类型强制转换,将数值型数据转换为字符型。 选项D中,赋值运算符的作用是将一个数据赋给一个变量,此项中等号左半部分不合要求。 故本题答案为D。 16. 本题的考查点是逻辑或运算。 a|b若a、b之一为真,则a|b为真,但如果a为真,则b不用考虑,也就是无需计算,仍为原值。 结合本题,因为b>a为真,即n=1,所以m不用计算仍为原值,且k值为1。 故本题答案为C。 17. 本题的考查点是格式输入函数。 格式输入函数的一般形式: scanf(格式控制,地址表列) 需要注意的是: 如果在“格式控制”字符串中除了格式说明以外还有其它字符

40、,则在输入数据时应输入与这些字符相同的字符。所以输入的两个数字之间的逗号是不可少的。 故本题答案为A。 18. 本题的考查点是逗号表达式。 逗号表达式的一般形式为: 表达式1,表达式2 逗号表达式的求解过程为:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。 故本题答案为D。 19. 本题的考查点是实型数据。 对于此类题目,我们可用排除法,题目要求保留到小数点后两位,选项A、B、D都不合题面要求。选项C中,x=(int)(x*100+0.5)/100.0中,x为float型,所以小数点后有6位小数,x*100后有4位,x*100+0.5仍为4位,且在这里已经将第三位四舍五入了

41、,取整后再除以100.0,结果中小数点后为2位。 故本题答案为C。 20. 本题的考查点是if语句。 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的几种操作之一。 选项A,因为前面两个条件都不满足,所以执行最后一种操作,x=3; 选项B,a<3成立,执行第一种操作,x=3; 选项C,a<3成立,执行第一种操作,x=3;a<2成立,执行第二种操作,此时x=2;a<1不成立,最后的不执行,所以执行此段程序后x=2; 选项D,a<b成立,执行x=b,此时x=2;b<c成立,执行x=c,此时x=3;c<a不成立,不执行x=a,所

42、以执行此段程序后x=3。 故本题答案为C。 21. 本题的考查点是do-while语句 此语句的一般形式为: do 语句 while (表达式)其特点为:先执行语句,后判断表达式。 它是这样执行的:先执行一次指定的内嵌的语句,然后判别表达式,当表达式的值为非零("真")时,返回重新执行该语句,如此反复,直到表达式的值等于0为止,此时循环结束。 当n=-1时,s+=1,s=1; a=a-2=-1;a!=n不成立,结束循环,此时s值为1,不符合题意; 当n=-3时,s+=1,s=1; a=a-2=-1;a!=n成立,继续循环,s=s+1=2,a=a-2=-3;a!=n不成立,此

43、时s值为2,符合题意; 故本题答案为B。 22. 本题的考查点是赋值语句。 本题s的初值是a,然后b从1循环到c,每循环一次,s都加1,也就是到了c,加了1*c,所以程序所实现的功能实际上是s=a+c。 故本题答案为B。 23. 本题的考查点是循环和continue语句。 continue语句是结束本次循环。n从0开始循环,判断n%3!=0是否成立,为真,跳出循环,继续下一轮for循环条件的判断,为假,执行k-,并继续下一轮for循环条件的判断,当条件不满足时,则结束循环,输出k、n的值。 故本题答案为C。 24. 本题的考查点是查找程序运行错误的原因。主要考察运算中字符的转换。 初看此题,可

44、能不太容易发现错误,该题的运行结果是 1.0000,算法错误。s=s+1/n; 1/2=0,因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。 故本题答案为C。 25. 本题的考查点是字符变量的赋值。 字符型变量用来存放字符常量,注意只能放一个字符。选项A是想输出这个反斜杠线'',必须用转义字符才能实现。即应该是ch='',所以选项A错误。C语言中字符型变量的赋值,在ASCII码值0255之间,整型数据和字符型数据有时可以通用,所以B是正确的。选项C是将NULL赋给一个字符型变量,NULL代表一个空字符,相当于0。

45、所以也正确。选项D中'xaa'表示的是1到2位16进制数所代表的字符。所以也是正确的。 故本题答案为A。 26. 本题的考查点是函数的调用。 在调用函数时,大多数情况下,主调函数和被调函数之间有数据传递关系。这就是平时所说的实参和形参,在函数调用时,函数名后面括弧里的表达式就称为“实参”。 按函数在程序中出现的位置来分,可以有以下三种函数调用形式: 1、把函数调用作为一个语句。如:printstar( );这时不要求函数带回值,只要求函数完成一定的操作。故A选项的说法是对的。 2、函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如

46、: c=2*max(a,b)函数max是表达式的一部分,它的值乘2再赋给c。所以选项C的说法是正确的。 3、函数调用作为一个函数的实参,例:m=max(a,max(b,c);其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。但函数调用不可以作为一个函数的形参,因为函数调用的参数的数据传递是“值传递”,即单向传递,只由实参传给形参,不能由形参传回来给实参。故B选项的说法也是正确的。选项D错误。 故本题答案为D。 27. 本题的考查点是函数调用。 fun(int y,double m); /不要类型,题面已经说明变量都已正确定义并赋值。 k=fun(10,12.5); /函数没

47、有返回值 void fun(n,x); /void不要 故本题答案为C。 28. 本题的考查点是函数。 fun函数用了两个指向字符型数据的指针作为形参。该功能是把b的地址赋给a,然后a存储单元里的值再加1。 (*a)+表示的是a所指向的元素值加1,注意:是元素值加1,而不是指针值。 main函数中,p1里存放的是c1的地址,p2里存放的是c2的地址,fun(p1,p2)后,p2的地址赋给了p1,此时p1和p2都指向了c2,即a,(*a)+,a的值加了1,变为了b。所以此时c2的值为b,而c1的值没变,仍为A。注意,这里变的是p1的地址和c2的值。 故本题答案为A。 29. 本题的考查点是指针变

48、量的运用。 选项A、B指针定义错误,都将指针指向了NULL,都为空值。其中空指针是由对指针变量赋予0值而得到的。例如: #define NULL 0int *p=NULL;对指针变量赋0值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元的,所以不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。而在选项C中最后一个*c=&t;错误,&t是地址,*c是值。选项D是让指针L指向字符串的末尾,即字符串结束符。 故本题答案为D。 30. 本题的考查点是打印输出NULL的值。 此题相当于输出控制字符NULL的ASCII码值,

49、即为0。 故本题答案为A。 31. 本题的考查点是字符型变量。 C语言中,字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。所以把整型数据赋给字符型变量,直接用c=97即可,所以选项C正确。看上去选项A也是正确的,但题目要求选的是正确的语句,由于选项A少分号,所以不能构成语句,所以选项A是错误的。 故本题答案为C。 32. 本题的考查点是二维数组的定义和初始化。 选项A定义的数组中各元素实际上是这样的:1,02,0 选项B定义的数组中各元素实际上是这样的:1,23,4 选项C定义的数组中各元素实际上是这样的:1,02,3 选项D错在:C中在对数组进行初始

50、化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 故本题答案为D。 33. 本题的考查点是结构体变量的定义。 将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,struct color),不能只指定结构体名。其一般形式为" struct结构体名 成员表列变量名表列; 其中可以不出现结构体名,选项D就是缺省结构体名的情况。而变量名列表必须放在成员列表后面,所以B选项不能正确将c1定义为结构体变量。 故本题答案为B。 34. 本题的考查点是一维

51、数组的定义。 数组的常量表达式中可以包括整型常量和符号常量,不能包括变量。也就是说,C不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值,所以选项A不正确。而选项B事先定义一个字符常量N,所以可以在数组中作常量表达式,选项B正确。而选项C中不能用区间表示数组大小;在D中N虽然被赋为100,但N仍然为变量,所以不对。 故本题答案为B。 35. 本题的考查点是字符串的定义和赋初值。 选项A、C是对字符数组初始化,可以是逐个字符赋给数组中各元素,也可以对整个字符串赋初值,但必须是字符型(s型),并且C语言规定,只有静态存储(static)数组和外部存储(extern)数组才能初

52、始化。所以选项A、C都不对。应该这样来实现:static char s ="Beijing";选项B、D是想通过字符指针来实现,正确的格式是char *s; s="Beijing"。 故本题答案为D。 36. 本题的考查点是函数的返回值。 本题函数中形参为*p,它是一个指针变量,函数调用后,返回的是p所指向的存储单元里的值。 故本题答案为C。 37. 本题的考查点是函数的返回值。 函数的返回值是由return语句带回的,如果被调用的函数中没有return语句,并不带回一个确定的、用户所希望得到的函数值,但实际上,函数并不是不带回值,而只是不带回有用的值,

53、带回的是一个不确定的值。但并不影响程序的运行。故选项A、C虽然没有return语句,但没有语法错误,而选项B中,定义max函数时,里面的行参也要分别定义。而选项中只定义了x的数据类型,而y并未定义,所以会出现错误。 故本题答案为B。 38. 本题的考查点是带参数的宏定义。 本题的程序中就定义了一个带参数的宏,对F(a+,b+)进行展开后,宏的返回值为12,注意a+,b+都是先使用变量值,再自增。 故本题答案为A。 39. 本题的考查点是函数的返回值。 fun函数的作用是比较a、b的值,如果a>b,就返回a的值,反之,返回b的值。在main函数中,r=fun(fun(x,y),2*z),先对括号里的进行运算,fun(x,y)的返回值为8,再比较8和12,得到r的返回值为12。 故本题答案为D。 40. 本题的考查点是指针数组。 一个数组,其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都是指针变量。 int *p3表示此数组是指针类型的,每

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论