浙江传媒学院《C语言程序设计》期终(考试)(A)卷2004—2005学年第二学期任课教师系班姓名学号得分一一、、单单选选题题((共共3300分分,,每每小小题题11..55分分))1、组成C语言程序的是()A.函数B.过程C.子程序D.主程序和子程序2、编译程序的功能是()A.将汇编语言程序转换为目标程序B.将汇编语言程序转换为高级语言程序C.将高级语言程序转换为目标程序D.将高级语言程序转换为汇编程序语言3、C语言中定义某个内部变量时,如果省略了存储类型符,则系统将默认该变量是()A.自动型B.静态型C.寄存器型D.外部参照型4、下列字符序列中,合法的标识符是()A、S.b,sum,average,_aboveB、class,day,louts_1,2dayC、#md,&12x,momth,student_n1D、D56,r_1,name,_st_15、在C语言中,复合赋值运算x*=y+8等价于()。A.x=y+8B.x=x*(y+8)C.x=(y+8)*(y+8)D.x=x*y+86、设有以下宏定义:#defineN3#defineY(n)((N+1)*n)则执行语句:z=2*(N+Y(5+1));后,z的值为()。A.出错B.42C.48D.547、下列表达式中,属于关系表达式的是()。A.x=60==1B、x+60*(x60)C、x=60&&x70||x==50D、x=(x=60)8、下列叙述中,正确的一条是()。A.可以对结构体类型和结构类型变量赋值、存取或运算。B.结构体变量所占内存长度是各成员所占内存长度之和。C.结构一旦定义,系统就给它分配了所需的内存空间。D.结构体中成员的数据类型必须是C语言基本数据类型。9、若程序中定义了以下函数doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()A.doublemyadd(doublex,doubley);B.doublemyadd(double,double);B.doublemyadd(doubleb,doublea);D.doublemyadd(doublea,b);10、有以下程序voidswap1(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(a);swap2(b[0],b[1]);printf(%d%d%d%d\n,a[0],a[1],b[0],b[1]);}其输出结果是()A.5353B.3553C.3535D.533511、以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是()A.if((ab)&&(bc))k=1;B.if((ab)||(bc))k=1elsek=0;elsek=0;C.if(a=b)k=0;D.if(ab)k=1;elseif(b=c)k=1;elseif(bc)k=1;elsek=0;12、设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()A.scanf(%d,pa);B.scanf(%d,a);C.scanf(%d,&pa);D.scanf(%d,*pa);13、有以下定义#includestdio.hchara[10],*b=a;不能给数组a输入字符串的语句是()A.gets(a)B.gets(a[0])C.gets(&a[0]);D.gets(b);14、设有以下语句typedefstructS{intg;charh;}T;则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量15、有以下程序strucSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={LiSiGuo,2042};c=b;}voidf2(structSTU*c){structSTUb={SunDan,2044};*c=b;}main(){structSTUa={YangSan,2041},b={WangYin,2043};f1(a);f2(&b);printf(%d%d\n,a.num,b.num);}执行后的输出结果是()。A.20422044B.20412043C.20412044D.2042204316、有以下程序#includestdlib.hstructNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p-num=1;q-num=2;r-num=3;p-next=q;q-next=r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(“%d\n”,sum);}执行后的输出结果是()。A.4B.3C.5D.617、若在fopen函数中使用文件的方式是“rb”,该方式的含义是()。A.为输入(读)打开一个文本文件B.为输出(写)打开一个二进制文件C.为输入(读)打开一个二进制文件D.向二进制文件尾增加数据18、若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是()。A.a[*p]B.a[10]C.*aD.a[p-a]19、有以下程序voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i=0;i--)sum(&aa[i]);printf(%d\n,aa[0]);}执行后的输出结果是()A.3B.4C.2D.120、语句int(*p)()的含义是()A.p是指针函数B.p是指针变量,指向一个整型数据C.p是一个指向一维数据的指针变量D.p是一个指向函数的指针变量,该函数的返回值是一个整型数据二二、、填填空空题题((共共2200题题,,每每空空11分分))1、在C语言中,定义整型变量i的语句是;定义含有100个元素的整型数组A语句是;定义p为指向结构类型student的指针变量的语句是;定义f为带回整型函数值的函数的语句是;定义一个大小为20的字符数组arr,应写为。2、申请一个结构体student类型的结点,将首地址保存在structstudent指针变量new中的语句为;设链表结构中指针域为next,其中p为链表中的一个结点,在p后插入一个q结点的语句是;与;3、有以下语句段intn1=10,n2=20;printf(,n1,n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10;n2=20;4、函数fun的功能是计算xndoublefun(doublex,intn){inti;doubley=1;for(i=1;i=n;i++)y=y*x;returny;}主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为。5、已知#definePI3.14#defineAREA(r)PI*r*r则printf(%f\n,AREA(2+3))输出结果为。6、表达式8.4*(3/5)的值为。7、编辑好一个C源程序sum.c,首先要对源程序进行编译,得到目标程序文件,再将目标程序调入内存,与系统提供的库函数等连接,得到可执行的目标程序文件,最后调入内存再使之运行。8、表达式410?(53?4:3):4的值为。9、以下函数用来求出两个整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,z){*z=x+y;}10、条件“20x30或x-100”的C语言表达是为。11、已知字符A的ACSII码值为65,以下语句的输出结果是。charch='B';printf(%c%d\n,ch,ch);12、表达式'a'||'b'&&!'c'的值为。13、C语言中,对于循环结构,有do-while语句、while语句和语句。三三、、程程序序阅阅读读题题((每每题题33分分,,共共1155分分))1、执行完下列程序段后,输出结果是。voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(xy)f(x,y);elseif(yz)f(y,z);elsef(x,z);printf(%d,%d,%d\n,x,y,z);}2、有以下程序,执行后输出结果是。main(){intt=1,i=5;for(;i=0;i--)t*=i;printf(t=%d\n,t);}3、程序的运行结果。main(){inti,n=0;for(i=2;i5;i++){do{if(i%3)continue;n++;}while(!i);n++;}printf(n=%d\n,n);}4、执行完下列语句段后,i的值为。intf(intx){staticintk=0;x+=k++;returnx;}main(){inti;i=f(2);i=f(3);printf(i=%d,i);}5、下面程序的运行结果s的值为。intf(inta[],intn){if(n1)returna[0]+f(&a[1],n-1);elsereturna[0];}main(){intaa[3]={1,2,3},s;s=f(&aa[0],3);printf(s=%d\n,s);}四四、、程程序序设设计计((共共3355分分))1、输入10个数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写出3个函数:(1)输入10个数(5分)(2)进行处理(10分)(3)输出10个数(5分)要求:用指针完成三个函数,部分源程序已经给出,不得修改,不得申请其他变量。你只需在程序空白处填写代码,完善程序功能。#includestdio.hvoidinput(int*array,intn);voidmax_min(int*array,intn);voidoutput(int*array,intn);main(){intnumber[10];input(number,10);max_min(number,10);output(number,10);}voidinput(int*array,intn){int*p=array;printf(inputnnumber);//在此处编写程序代码}voidmax_min(int*array,intn){int*p,*max,*min;p=max=min=array;//在此处编写程序代码}voidoutput(int*array,intn){int*p=array;printf(outputnnumber);//在此处编写程序代码}2、请编写一个程序fun(char*s),函数的功能是将字符串中的内容逆置。例如:字符串中原来的内容为:abcd,调用函数后,字符串中的内容变为:dcba。(15分)#includestdio.h#includestring.h#defineN81voidfun(char*s);voidmain(){chara[N];gets(a);puts(a);fun(a);puts(a);}voidfun(char*s){//在此处编写程序代码}