29. 以下程序中,while循环的循环次数是( D ) main() {
int i=0; while(i<15) {
if(i<1)continue; if(i>=10)break; i++; } }
a) 1 b) 11 c) 15 d) 死循环 30. 下面的程序执行后文件a.txt中的内容是(a ) #include
FILE *f; int i;
f=fopen(s,”w”);
for(i=0;i main() { fun(“a.txt”,”abc”); fun(“a.txt”,”123”); } a) 123 b) abc123 c) abc d) 123abc 二、 程序阅读题(本大题共4小题,每小题5分,共20分) 31. #include void swap(int *c0,int *c1) { int t; t=*c0; *c0=*c1; *c1=t } main() { int a[2]={1,2},b[2]={3,4}; swap(a,b+1); swap(&a[1],b); printf(“%d,%d,%d,%d\\n”,a[0],a[1],b[0],b[1]); } 32. #include char *p,t; p=s+1;t=*s; while(*p) { *(p-1)=*p; p++; *(p-1)=t; } } main() { char str[10]=”0123456”; fs(&str); printf(“%s\\n”,str); } 33. #include static int y=0; int z=0; y+=x; z+=x; return (x+y+z); } main() { int n,x=10; for(n=1;n<4;n++) printf(“%d:%d;”,n,fun(x)); printf(“\\n”); } 34. 当运行以下程序时,输入xyz<回车>,写出程序的输出结果。 #include int k; k=strlen(str); while(k>0) { str[2*k]=str[k]; str[2*k-1]=’+’; k--; } } main() { char str[40];char *p; p=str; scanf(“%s”,p); fun(p); printf(“%s\\n”,str); } 三、 完善下列程序(本大题共4小题,每空2分,共20分) 请将答案填写在答题纸相应的位置上。 35. 以下程序的功能是:从键盘上输入班级学生的成绩,统计出平均成绩,并输出高于平均分的学生成绩。 #include float x[NUM],sum,ave,a; int n=0,I; a=0; sum=0.0; printf(“Enter mark:\\n”); scanf(“%f”,&a); while(1) { sum+=a; x[n]= (1) ; n++; if(n>=NUM)break; scanf(“%f”,&a); } ave= (2) ; printf(“Output:\\n”); printf(“ave=%f\\n”,ave); for(i=0;i printf(“%f\\n”, (3) ); } 36. 输入一个小于32768的正整数,程序求该数各位之和,比如123,1+2+3=6. #include int I,t= (4) ; scanf(“%d”,&i); while(i) { y+=i; (5) ; } printf(“%d\\n”,t); } 37. 以下程序中digital函数的功能是提取字符串s中的所有数字字符。如下主程序的运行结果是:1245,请填空完成程序。 #include int n=0,I; for(i=0;s[i];i++) { if( (6) )s[n++]=s[i]; s[n]= (7) ; } } main() { char s[]=”1a2sdf4gg5”; digital(s); printf(“%s”,s); } 38. 以下程序将整型数组a中的元素逆序输出。 #include void fun(int a[],int n) { int I,j,t; (8) ; for(i=0;i t=a[i]; a[i]=a[j]; a[j]= (9) ; } } main() { int I,n,a[]={9,8,7,6,5,4,3,2,1,0}; n=10; fun( (10) ); for(i=0;i printf(“%d”,a[i]); printf(“\\n”); } 第二部分 数据结构(共100分) 一、 单项选择题(本大题共12小题,每小题2分,共24分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。 1. 以下说法正确的是( D ) a) 数据袁术是数据的最小单位 b) 数据项是数据的基本单位 c) 数据结构是带有结构的各数据项的集合 d) 数据结构是带有结构的数据元素的集合 2. 关于线性表的说法,下面选项正确的是( B ) a) 线性表的特点是每个元素都有一个前驱元素和一个后继元素 b) 线性表是具有n(n>=0)个元素的一个有限序列 c) 线性表就是顺序存储的表 d) 线性表只能用顺序存储结构实现 3. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为( A )。 a) p->next=p->next->next b) p=p->next c) p=p->next->next d) p->next=p 4. 和顺序栈相比,链栈比较明显的优势是( A )。 a) 通常不会出现栈满的情况 b) 通常不会出现栈空的情况 c) 插入操作更容易实现 d) 删除操作更容易实现 5. 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次入栈,一个元素出栈后即入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是( A )。 a) 6 b) 4 c) 3 d) 2 6. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是( C )。 a) 选择排序 b) 快速排序 c) 插入排序 d) 归并排序 7. 若对n个元素进行插入排序,则进行任一趟排序过程中,为寻找插入位置而需要的时间复杂度为( B )。 a) O(1) b) O(n) c) O(n2) d) O(log2n) 8. 如果对一棵有n个结点的完全二叉树的结点按层次遍历的次序编号,则对于结点i(2i>n)的左孩子结点是( C )。 a) 2i b) 2i+1 c) 2i-1 d) 不存在 9. 对于深度为5(设根的深度为1)的二叉树至多有( C )个结点 a) 16 b) 32 c) 31 d) 10