| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1244 人关注过本帖
标题:telesky
只看楼主 加入收藏
telesky
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-3-6
收藏
 问题点数:0 回复次数:1 
telesky
2005年考前密卷——选择261-280题
(261)已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-l&&y+z/2的值是_______。 A)6 B)0 C)2 D)l (261)D 知识点:运算符的优先级 评 析:在本题中,运算符的优先级分别为:!>/>+,->&&,即:!(3+4)+5-1&&4+5/2=O+5-1&&4+2=4&&6=1。 (262)以下选项中,与l(=n++完全等价的表达式是_______。 A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1 (262)A 知识点:自增及赋值运算 评 析:n++是自增运算,是先使用,然后再使n加l,分开来写即为:k=n,n=n+l。 (263)以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下: main() { int n,k; float score,sum,ave; sum=O.O; for(n=l;n<=10;n++) { for(k=1;k<=4;k++) {scanf("%f",&score); sum+=score; } ave=sum/4.0; printf("NO%d:%f\n",n,ave); } } 上述程序运行后结果不正确,调试中发现有一条语句在程序中的位置不正确。这条语 句是_______。 A)sum=O.O; B)sum+=score; C)ave=sum/4.0; D)printf("NO%d:%f\n",n,ave); (263)A 知识点:for循环语句的使用 评 析:题目中要求每位学生的平均分数,首先要求每位学生的总分,也就是程序中的sum,所以sum应在第一个for循环体内赋初值,如果在循环体外赋初值就会得到所有学生的分数总和,不合题意。 (264)有以下程序 main() { int a=15,b=21,m=O; switch(a%3) { case 0:m++;break; case l:m++: switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是_______。 A)l B)2 C)3 D)4 (264)A 知识点:switch语句 评 析:因为a%3是个常数,所以只执行一次就跳出switch结构。即只执行m++,此时m为1。 (265)若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是_______。 A)p=q; B)*p=*q; C)n=*q; D)p=n; (265)D 知识点:指针变量的引用 评 析:指针变量不同于整型变量和其他类型的变量,它是用来存放地址(指针)的,不能将一个整型变量(或任何其他非地址类型的数据)赋给一个指针变量,这样的赋值是不合法的。本题中的答案D就属于这种情况,所以p=n;是非法的赋值语句。 (266)有以下程序 Void fun(char*c,int d) {*c=*c+l;d=d+l; printf("%c,%c,",*c,d); } main() { char a=‘A’,b=‘a’; fun(&b,a); printf("%c,%c\n",a,b); } 程序运行后的输出结果是_______。 A)B,a,B,a B)a,B,a,B C)A,b,A,b D)b,B,A,a (266)D 知识点:函数的调用 评 析:将a,b代入函数得*&b=*&b+1=a+l=b,所以打印出第一个字母b: a=a+1=A+1=B,打印出第二个字符B: a:=‘A’,输出字母A; b=‘a’,输出字母a。 (267)以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。 Void sort(int a[],int n) { int i,j,t; for(i=0;i<n-l;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } main() {int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是_______。 A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)l,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3, (267)C 知识点:对数组的操作 评 析:本题并不是对数组的所有元素进行排序,而是对从a[3]开始往后的5个元素进行排序。 (268)有以下程序 main() {char a[]={‘a’,‘b’,‘c’,‘d’‘e’,‘f’,‘g’,‘h’,‘\0’};int i,j; i=sizeof(a);j=strlen(a); printf("%d,%d\n",i,j); } 程序运行后的输出结果是________。 A)9,9 B)8,9 C)1,8 D)9,8 (268)D 知识点:计算字符数组与字符串的长度 评 析:sizeof()函数是计算字符数组的长度,因为‘\0’也是一个字符,要计算在内。在字符数组末尾加上‘\O’作为字符串结束标志,strlen()是计算字符串长度的函数,遇到 ‘\O’即认为是字符串结束,不把空字符计入字符串的长度。 (269)以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。 void reverse(int a[],int n) {int i,t; for(i=0;i<n/2;i++) {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() {int b[10]={l,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); } 程序运行后的输出结果是________。 A)22 B)10 C)34 D)30 (269)A 知识点:对数组的操作 评 析:本题并不是将整个数组中的内容逆置,而是逆置前8个元素。逆置后的数组为:8,7,6,5,4,3,2,l,9,10通过for循环计算b[6]+b[7]+b[8]+b[9]即2+1+9+10=22。 (270)有以下程序 #include<string.h> main() { char*p="abcde\0fghjik\0"; printf("%d\n",strlen(p)); } 程序运行后的输出结果是________。 A)12 B)15 C)6 D)5 (270)D 知识点:计算字符串的长度 评 析:“\0”是字符串标志,当遇到此标志时字符串已结束.所以字符串的长度为5. (271)程序中头文件typel.h的内容是: #define N 5 #define Ml N*3 程序如下: #include"typel.h" #define M2 N*2 main() { int i; i=M1+M2; printf("%d\n",i); } 程序编译后运行的输出结果是________。 A)10 B)20 C)25 D)30 (271)C 知识点:宏定义 评 析:宏定义就是用一个指定的标识符(即名字 )来代表一个字符串,它的一般形式为: #define 标识符 字符串 这种方法使用户能以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为 ”宏名”宏名一般习惯用大写字母表示,以与变量名相区别。使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。如本题用宏名M1代替字符串N*3; M2代替字符串N*2。 i=M1+M2=N*3+N*2=5*3+5*2=25。 (272)以下叙述中错误的是_______。 A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B)在程序结束时,应当用fclose函数关闭已打开的文件 c)利用fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数 据 D)不可以用FILE定义指向二进制文件的文件指针 (272)D 知识点:对文件的操作 评 析:每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息,这些信息是保存在一个名为FILE的结构体类型的结构体变量中的。而文件又分为ASCII文件和二进制文件,所以,可以用FILE定义指向二进制文件的文件指针。 (273)有以下程序 #include<string.h> main(int argc,char*argv[]) {int i,len=O; for(i=1;i<argc;i++)len+=strlen(argv[i]); printf("%d\n",len); } 程序编译连接后生成的可执行文件是exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10/ 则运行的结果是_______。 A)22 B)17 C)12 D)9 (273)D 知识点:指针数组作main函数的形参 评 析:本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。argc用于存放命令行中命令字和参数的总和的个数4,argv用来存放命令行中命令字和所有参数的字符串,并规定argv[0]存放命令字字符串exl,argv[1]用来存放第一个参数的字符串abcd,argv[2]用来存放第二个参数的字符串 efg,argv[3]用来存放第三个参数的字符串10。那么for循环将循环3次分别将argv数组中元素的长度累加到len中,所以答案为9。 (274)有以下程序 int fa(int x) { return x*x;} int fb(int x) {return x*x*x;} int f(int(*f1)(),int(*f2)(),int x) { return f2(X)-fl(x);} main() {int i; i=f(fa,fb,2);printf("%d\n",i); } 程序运行后的输出结果是_______。 A)-4 B)l C)4 D)8 (274)C 知识点:函数的嵌套调用 评 析:f(fa,fb,2)即为fb(2)-fa(2)=2*2*2-2*2=8-4=4。 (275)有以下程序 void ss(char*s,char t) {while(*s) {if(*S==t)*s=t-‘a’+‘A’; S++: } } main() {char strl[100]= "abcddfefdbd",c=‘d’; ss(strl,c);printf("%s\n",strl); } 程序运行后的输出结果是_______。 A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd (275)B 知识点:将字符串中指定的小写字母转换为大写字母 评 析:在主函数中因为c被赋值为字符’d’,所以函数的功能是将字符串中的小写字母d转换为大写。 (276)设有如下定义: struct sk { int a; floatb: }data; int *p; 若要使p指向data中的a域,正确的赋值语句是_______。 A)p=&a; B)p=data.a; C)p=&data.a; D)*p。data.a (276)C 知识点:指向结构体变量的指针 评 析:将data.a的起始地址赋给指针变量p,也就是使p指向data.a。 (277)有以下程序 #include<stdlib.h> struct NODE { int num;struct NODE *next;} main() {struct NODE *p,*q,*r; p=(struct NODE*)malloc(sizeof(struct NODE)); q=(struct NODE*)malloc(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\n",p->num+q->next->num); } 程序运行后的输出结果是_______。 A)10 B)20 C)30 D)40 (277)D 知识点:用指针处理链表 评 析:p->num即为10,q->next->num即为r->num,为30,所以p->num+q->next->ntun=10+30=40。 (278)若有以下说明和定义 typedef int *INTEGER INTEGER p,*q; 以下叙述正确的是_______。 A)p是int型变量 B)p是基类型为int的指针变量 C)q是基类型为int的指针变量 D)程序中可用INTEGER代替int类型名 (278)B 知识点:用typedef定义类型 评 析:typedef int*INTEGER;(声明INTEGER为整型指针类型); INTEGER p,*q;(定义p,*q为整型指针类型),所以p是基类型为int的指针变量;*q是基类型为int的指针变量;程序中可用*INTEGER代替int类型名。 (279)有以下程序 main() {unsigned char a,b,c; a=0x3;b=a10x8;c=b<<1; printf("%d%d\n",b,c); } 程序运行后的输出结果是_______。 A)-11 12 B)-6 -13 C)12 24 D)ll 22 (279)D 知识点:位运算 评 析:0x3表示16进制表,”|”为按位或,”<<”为按位左移,将a,b转换为二进制数进行位运算,再将结果以十进制打印出来,结果为11 22。 (280)以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。 #include<string.h> void f(char p[][10],int n) {chart[20];int ij; for(i=0;i<n-l;i++) for(j=h1.j<n.j++) if(strcmp(p[i],p[j])<O) {strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } main() {char p[][10]={ "abc","aabdfg","abbd","dcdbe","cd"};int i; f(p,5);printf("%d\n",strlen(p[0])); } 程序运行后的输出结果是________。 A)6 B)4 C)5 D)3 (280)C 知识点:比较字符串的大小 评 析:比较字符串的大小是从字符串的第一个字母开始比较,如果第一个字母相同则比较第二个字母,以此类推,直至字符串结束。strcmp(字符串l,字符串2)的作用是比较字符串l和字符串2:字符串l=字符串2,函数值为0;字符串1>字符串2,函数值为l;字符串1<字符串2,函数值为一1。Strcpy(字符数组l,字符串2)的作用是将字符串2复制到字符数组l中去。结合本题可知,比较后的字符串数组为: p[O]=“dcdbe” p[l]=“cd” p[2]=“abc” p[3]=“abbd” p[4]="aabdfg” 所以,strlen(p[0])=5。
搜索更多相关主题的帖子: telesky 
2005-03-18 17:26
telesky
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-3-6
收藏
得分:0 
2005年考前密卷——选择241-260题
(241)以下程序的输出结果是_______。 #inclue <stdio.h> #inclue <string.h> main() {char bl[8]= "goddwer",b2[8],*pb=b1+3; while(--pb>=b1)strcpy(b2,pb); printf("%d\n",strlen(b2)); } A)8 B)3 C)l D)7 (241)D 知识点:库函数的正确调用 评析:本题中,每次执行循环,都是将pb指针指向的内容复制到b2中,第一次循环中,将bl[2]~b1[7]六个字符复制到b2中,第二次循环,将b[l]~b[7]七个字符复制到b2中,第三次循环,将b1数组的全部内容复制到b2中。而后一次复制会覆盖前面的复制,最后b2的实际长度应该是八,而strlen()函数测出的是一个字符串中“\O”之前的全部字符的个数,所以最后输出的值是7。 (242)在说明语句:int*f();中,标识符f代表的是_______。 A)一个用于指向整型数据的指针变量 B)一个用于指向一维数组的行指针 C)一个用于指向函数的指针变量 D)一个返回值为指针型的函数名 (242)D 知识点:返回指针值的指针函数 评析:一个函数在编译时被分配给一个入口地址,这个入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。int·f()表示f是一个函数,它带回一个指针值,这个指针是指向一个整型数据的。 (243)不合法的main函数命令行参数表示形式是________。 A)main(int a,char*c[]) B)main(int arc,char**arv) C)main(int argc,char*argv) D)main(int argv,char*arge[]) (243)C 知识点:指针数组,指向指针的指针,main函数的命令行参数 评析:本题主要考查了对main函数参数的了解,main函数可以有两个形参,一般形式是:main(int argc,char*argv[]),也就是说,它的第一个形参是一个整型变量。第二个形参是一个指针数组,其元素指向字符型数据。 (244)以下程序的输出结果是________。 int x=3: main() {int i; for(i=l;i<x;i++)incre(); } incre() {static intx=l; x*=x+l; printf("%d",x); } A)3 3 B)2 2 C)2 6 D)2 5 (244)C 知识点:内部函数与外部函数 评析:incre()中定义一个静态局部变量x,它的作用范围仅限于本函数中,而不会影响main()函数中的x值,所以main()中执行两次for循环,第一次调用incre()函数时,函数中x的初值是1,x*=x+1语句可以写成x=x*(x+1),结果x的值变成2,随后输出值2;在第二次调用incre()函数时,x的值继承了上次调用的运行结果,变成了2,执行了x*=x+l后,x的值是6,故又输出了数字6。 (245)若有以下定义: struct link {int data; struct link *next; }a,b,c,*p,*q; 且变量a和b之间已有如图所示的链表结构: 指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是________。 A)a.next=c;c.next=b; B)p.next=q;q.next=p.next; C)p->next=&c;q->next=p->next; D)(*p).next=q;(*q).next=&b; (245)D 知识点:用指针和结构体构成链表,单向链表的建立、输出、删除与插入 评析:本题考的是指针的运用。即先将元素a的指针指向q指针所指向的元素即c,然后将c的指针指向b元素,采取的是直接取元素地址的方式。 (246)算法分析的目的是_______。 A)找出数据结构的合理性 B)找出算法中输入和输出之间的关系 C)分析算法的易懂性和可靠性 D)分析算法的效率以求改进 (246)D 知识点:算法分析 评析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法 的执行效率。 (247)n个顶点的强连通图的边数至少有_______。 A)n-1 B)n(n-1) C)n D)n+l (247)C 知识点:强连通图 评析:在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。 (248)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是_______。 A)堆排序 B)直接插入排序 C)快速排序 D)直接选择排序 (248)B 知识点:插入排序算法 评析:当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项B。 (249)用链表表示线性表的优点是_______。 A)便于插入和删除操作 B)数据元素的物理顺序与逻辑顺序相同 C)花费的存储空间较顺序存储少 D)便于随机存取 (249)A 知识点:链表的结构 评析:链式存储结构克服了顺序存储结构的缺点:它的结点空问可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结构下的线性表便于插入和删除操作。 (250)下列不属于结构化分析的常用工具的是_______。 A)数据流图 B)数据字典 C)判定树 D)PAD图 (250)D 知识点:结构化分析的常用工具 评析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。而PAD图是常见的过程设计工具中的图形设计工具。 (251)软件开发的结构化生命周期方法将软件生命周期划分成_______。 A)定义、开发、运行维护 B)设计阶段、编程阶段、测试阶段 C)总体设计、详细设计、编程调试 D)需求分析、功能定义、系统设计 (251)A 知识点:软件生命周期 评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护三个阶段。 (252)在软件工程中,白盒测试法可用于测试程序的内部结构。此方法将程序看做是_____。 A) 循环的集合 B)地址的集合 C)路径的集合 D)目标的集合 (252)C 知识点:软件测试方法 评析:软件的自盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 (253)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有 _______。 A)数据无冗余 B)数据可共享 C)专门的数据管理软件 D)特定的数据模型 (253)D 知识点:数据库系统的基本特点 评析:在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。 (254)分布式数据库系统不具有的特点是_______。 A)分布式 B)数据冗余 C)数据分布性和逻辑整体性 D)位置透明性和复制透明性 (254)B 知识点:数据库系统的基本概念 评析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。 (255)下列说法中,不属于数据模型所描述的内容的是_______。 A)数据结构 B)数据操作 C)数据查询 D)数据约束 (255)C 知识点:数据模型的基本概念 评析:数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中·数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式;数据模型中的数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的制约与依存关系,以及数据动态变化的规则,以保证数据的正确、有效与相容。 (256)以下选项中合法的实型常数是_______。 A)5E2.0 B)E-3 C).2E0 D)1.3E (256)C 知识点:实型数据的指数表示方式 评析:以指数形式表示实数时,字母e(或E)之前必须有数字,且e后面的指数必须为整数。 (257)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量‘\101’是_______。 A)字符A B)字符a C)字符e D)非法的常量 (257)A 知识点:字符与ASCII码的转换 , 评析:八进制101转换为lO进制即为65,而字母A的ASCII码是65,所以用八进制表示的字符常量‘\101’是A。 (258)设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。 A)6.500000 B)6 C)5.500000 D)6.000000 (258)D 知识点:各类数值型数据的混合运算 评析:各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为:总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度。 (259)已知i、i、k为int型变量,若从键盘输入:1,2,3/,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_______。 A)scanf("%2d%2d%2d",&i,&j,&k); B)scanf("%d %d %d",&i,&j,&k); C)scanf("%d,%d,%d",&i,&j,&k); D)scanf("i=%d,j=%d,k=%d",&i,&j,&k); (259)C 知识点:格式输入函数 评析:如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。 (260)若有以下程序: main() {int k=2,i=2,m; m=(k+=i*=k); printf("%d,%d\n",m,i); } 执行后的输出结果是_______。 A)8,6 B)8,3 C)6,4 D)7,4 (260)C 知识点:复合的赋值运算符 评析:在赋值符“=”之前加上其他运算符,可以构成复合的运算符。此运算为右结合性。即从右往左计算。i*=k即i=i*k=2*2=4,k=k+i=2+4=6,然后将k的值赋给m。
2005-03-23 19:16
快速回复:telesky
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041314 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved