您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 武汉大学计算机学院C语言历年试题1
武汉大学计算机学院2001-2002学年度第一学期2001级《高级语言程序设计》期末考试试卷姓名:学号:专业:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否则视为违规。一.选择最合适的答案填空(每题1分,共10分)()1.______不是C语言的基本控制结构。A.转移B.循环C.顺序D.选择()2.表达式65|9和65&9的值为______。A.74和74B.73和1C.74和405D.73和9()3.设变量intm,n,a,b的值均为1,则执行表达式(m=ab)&&(n=ab)后,m,n的值为______。A.1和1B.0和1C.1和0D.0和0()4.表达式353的值为______。A.4B.38C.105D.280()5.设有如下宏定义#defineWIDTH80#defineLENGTHWIDTH+1则执行赋值语句v=LENGTH*20;/*v为int型变量*/后,v的值为______。A.1620B.1601C.100D.1600()6.假如指针p已经指向某个整型变量,语句____使指针q与p指向同一变量。A.q=**pB.q=*&pC.q=&&pD.q=*p()7.设longa[50],*p;执行p=a;p+=4;后*(p+4)等价于____。A.a[8]B.a[4]C.a[2]D.无法确定()8.执行fp=fopen(”A:Exam1_8.txt”,”wb”);后fp为null,最可能的原因是____。A.按二进制方式打开文本文件B.文件A:Exam1_8.txt不存在C.文件写保护D.文件A:Exam1_8.txt大小写不一致()9.______不是对象的基本特性。A.封装B.多态(重载)C.非结构D.继承()10.结构化程序设计追求的首要目标是程序的______。A.运行速度快B.存储空间少C.结构优D.代码长度最短二.程序纠错(10分)下列两个程序段有若干错误,请你错误之处下方标明,如有必要可以简要说明原因(在程序右侧)。重要提示:任何一种程序语言其数据类型的存储空间将受到计算机制约。程序段A/*输入不超过20个正整数,计算其乘积*/#definenum20inta[num],count=0,buf=1;for(inti=0;(inum)&(buf0);i++){scanf(“%u”,buf);a[++count]=buf;}num=count;longsum=0;for(i=0;icount;i++)sum*=a[i];程序段B/*下列函数递归函数求f(n)=(2n)!*/longf(intn){inttmpif(n2)tmp=1;tmp=(2*n)*(2*n-1)*f(n-2);return(long)tmp;}三.程序阅读与分析(32分)1.(6分)下面的程序求矩阵A(m,m)的右下三角区的所有元素的和,请在程序的空白处填上适当的内容。#definem100main(){inta[m][m];inti,j;①sum=0;for(i=0;im;i++)for(j=0;jm;j++)scanf(“%d”,②);for(i=③;i④;i++)for(j=⑤;j⑥;j++)sum+=(double)a[i][j];}2.(6分)写出下列程序的运行结果。#includestdio.hmain(){inti,b,k=0;for(i=1;i=5;i++){b=i%2;while(b--=0)k++;}printf(“%d,%d”,k,b);}3.(6分)写出下列程序的运行结果。intfat(intn){staticintf=1;f=f*n*2;return(f);}main(){inti,j;for(i=1;i=5;++i)printf(“%d\t”,fat(i));}4.(6分)下列程序段将一个单链表写入一个文件:p=head;if(fp=fopen(“Exam5.dat”,”w”)!=null){while(p!=null){fwrite(p,sizeof(structnode),1,fp);p=(*p).next;}};请问用下面的程序段,可以将这个链表从该文件中生成到内存中吗?为什么?if(fp=fopen(“Exam5.dat”,”r”)!=null){while!feof(fp){p=malloc(sizeof(structnode))fread(p,sizeof(structnode),1,fp);p=(*p).next;}};5.(8分)阅读以下递归函数,并用非递归方法改写该函数。#includestdio.hvoidconvert(intn){inti;if((i=n/7)!=0)convert(i);putchar(n%7+’0’);}四.子程序设计(每题10分,共30分)本题说明:完成函数设计时,请自行说明所有的形式参数的类型1.设计一个函数arrsum(a,n)计算一维整数数组a中前n个元素的平均值。2.设计函数prime(n),其中n为任意一个整数,当n为素数时,函数返回真,否则返回假。3.调用函数reverse(h)将h指向的单链表倒置。实在参数h应该指向倒置后链表的头节点。五.算法设计(选做一题18分)说明:仅需任意选做一题。多选者,以卷面先列出的为判分依据;分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明;(9分)用伪代码或其它方法描述子程序;(9分)不必完整写出函数程序的代码,完整代码将不作为判分依据。1.用字符数组模拟实现字符串,给出下列函数:两个字符串的并接、找一个字符在串中的位置、统计一个字符在串中的数目。2.模拟实现大小写(52个)英文字母的集合运算,给出集合的表示方法,及运算属于∈、并∪、差─的子程序。3.模拟实现复数类型,给出复数的加法、减法和乘法的子程序。武汉大学计算机学院2002-2003学年度第一学期2002级《高级语言程序设计》期末考试试卷姓名:学号:专业:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否则视为违规。一.选择最合适的答案填空(每题2分,共20分)()1.在一个整常量后面加一个字母,如213L,则表示该常量为型常量。A.长整数B.常量C.地址D.八进制()2.定义变量时冠以关键字,则表示此标识符是静态外部变量,可以供其他文件共用。A.registerB.externC.voidD.static()3.______不是C语言的基本控制结构。A.转移B.循环C.顺序D.选择()4.表达式0x0fff&0x3345的值为______。A.3345B.0x3345C.0x345D.0x3fff()5.设变量intx=10,y=20,则执行x=x+y;y=x-y;x=x-y后x为______。A.30B.20C.10D.0()6.表达式272的值为______。A.54B.13C.81D.108()7.设有如下宏定义#defineWIDTHf(x,y)(xy)?x-y:x+y;则表达式f(10,20)的值为______。A.30B.20C.-10D.10()8.与*p.data指等价的表达式为____。A.*&pB.*&pC.p-dataD.p-*data()9.设inta[50],q;long*p;执行p=(long*)a;p+=4;q=(int*)p;后*(q+2)等价于____。A.a[6]B.a[4]C.a[10]D.无法确定()10.执行fp=fopen(”A:Exam1_8.txt”,”rb”);后fp为null,最可能的原因是____。A.源文件不是二进制文件B.文件A:Exam1_8.txt不存在C.文件写保护D.文件A:Exam1_8.txt长度太大二.文字填空(15分)1.变量名实际上是一个符号地址,对于已经定义的一个整型变量X,要获取其地址则可以用操作来实现。2.如果将变量c定义为无符号字符类型,定义形式为,其数值取值范围(写成十六进制)为至。3.设有inta=2,b=3;floatc=2.5;则算术表达式(a+b)/(int)c+(float)(a+b)/c的值是。4.对于c=ab?b:a;如果已知a=5;b=4;则c的值为。5.已知char*name[]={“Basic”,“C”,”Pascal”,“VB”,“VC++”};char**p;p=name+2;则语句printf(“%o\n”,*p);的输出为,语句printf(“%s\n”,*p);的输出为。6.在定义函数时,如果在函数首部的最左端冠以关键字,则表示此函数是外部函数,可以供其他文件调用。7.声明一个结构体类型的一般形式为。三.程序阅读与分析(20分)1.一个int型变量的最大允许值为32767,请写出程序的执行结果。(6分)main(){inta,b;longc;a=32767;b=a+1;c=a+1;printf(“%d,%d,%u”,a,b,c);}2.(6分)下面的程序对数组A[m]进行排序,并计算它们的和。请在程序的空白处填上适当的内容。#definem50main(){inta[m];①sum=0;inti,j,K;for(i=0;im;i++)scanf(“%d”,②);for(i=1;im-1;i++)for(j=③;④;j++){sum+=(double)a[i][j];if⑤{K=a[i];a[i]=⑥;a[j]=K;}}}3.(8分)说明子程序的功能voidReverse(charch){ch=getchar();ifch!=’#’{Reverse(ch);putchar(ch);};};给定输入字符串ABCDXF%&123#KK调用该过程Reverse(C)后,产生的输出是什么?实在参数C(字符变量)的值为什么?四.子程序设计(共30分)说明:每题15分,仅需任意选做两题。多选者,以卷面先列出的为判分依据;完成函数设计时,请自行说明所有的形式参数。1.1.左图为设定的有关结点及指针的取值示意,如果执行Try(p1,p2,p3)后,有关结点、指针的值如右图所示。请你用C语言:给出结点、指针的类型定义形式写出子程序Try的定义。(提示:形式参数应该适当作变化)2.2.编写递归函数f(n)求Fibonacci数列的第n个数。3.3.函数intgetbin(int*bitno);完成从键盘上读入二进制字符串将它的值作为函数值返回。其中,bitno返回二进制串的长度。(该串以非0、1的字符为结尾)如输入:101010B函数结果为:42输入:111111#函数结果为:63五.算法设计(选做一题15分)说明:任意选做一题。多选者,以卷面先列出的为判分依据;分析思路、重要数据类型的定义、模块的功能、形式参数、函数返回值说明;用伪代码或其它方法描述子程序;不必完整写出函数程序的代码,完整代码将不作为判分依据。1.1.任意给定一个年份year、月份month。设计一个输出月历的算法。2.2.用字符数组存储整数,如123则数组的前四个元素为’1’、‘2’、‘3’、‘\0’设计一个整数乘法、加法的子程序。武汉大学计算机学院2003-2004学年度第一学期2003级《高级语言程序设计》期末考试试卷姓名:学号:专业:未经主考教师同意,考试试卷、答题纸、草稿纸均不得带离,否则视为违规。一.单项选择题:(选择最合适的答案填空,每小题2分,共20分)()1.不正确的字符常量是______。A.‘2’B.‘\\’C.“q”D.‘*’()2.表达式7.5+7%2-5/2*3的结果为______。A.1.0B.2.5C.3.0D.4.5()3.设变量intm,n,a,b的值均为0,则执行表达式(m=a=b)||(n=a=b)后,m,n的值为______。A.1和1B.0和1C.1和0D.0和0()4.表达式352的值为______。A.8B.9C.16D.17()5.设有如下宏定义#defineweight50#defineprice1+weigh
本文标题:武汉大学计算机学院C语言历年试题1
链接地址:https://www.777doc.com/doc-2364344 .html