下载此文档

华中科技大学C语言试卷.pdf


文档分类:IT计算机 | 页数:约28页 举报非法文档有奖
1/28
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/28 下载此文档
文档列表 文档介绍
该【华中科技大学C语言试卷 】是由【小屁孩】上传分享,文档一共【28】页,该文档可以免费在线阅读,需要了解更多关于【华中科技大学C语言试卷 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..计算机学院2008-2009学年第2学期C语言程序设计考试试卷unsignedshorta1:2;unsignedshorta2:2;一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正unsignedshorta3:4;确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,unsignedshorta4:8;每小题1分,共10分。)};1、ENUM是【b】union{A、合法标识符B、C语言的关键字shortx;C、合法的字符串D、既不是C语言的关键字,也不是合法的字符串或标structpackedy;识符}z;2、下列数据中属于合法字符常量的是【d】=0xabab;A、、B、、C、'45'D、、A、11B、3C、2D、103、下列数据中合法的浮点型常量是【c】A、E+10B、2E+、2E-10D、、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选4、下列数据中与256等值的数为【】项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得A、0256B、0400C、0x400D、0x256分。本大题共5小题,每小题2分,共10分。)5、以下叙述中正确的是【】1、以下选项可作为C语言合法整型常量的是:【】A、局部变量说明为static存储类型,其生存期将得到延长A、0xf9B、100UC、0XABCDE12LD、0287B、全局变量说明为static存储类型,其作用域将被扩大2、对于下面关于数组声明,正确的是:【】C、任何存储类型的变量在未赋初值时,其值都是不确定的A、intc[2,3];B、intb[?b?-?a?];D、形参可以使用的存储类型说明符与局部变量完全相同C、intx,a[x][3];D、、6、-127的16位补码的十六进制表示是【】3、设有声明:intk[2],*p1=k,*p2=p1;下面能够正确执行的语句有:【】A、0xff81B、0x807fC、0xff80D、0x8080A、k=p1;B、p2=k+1;C、p1=p2;7、对于下面的数组声明,正确的是【】D*p1*=*p2;A、intx[][5];B、chart[]={?a?,?b?,?c?,???};4、设有说明:C、intn=5,a[n];D、chars[5]=“abcde”;structT{8、若有以下说明和语句,则在执行for语句后,*(*pt+2)表示的数组元素【】intn[2];intt[3][3],(*pt)[3],k;char*s;for(k=0;k<3;k++)pt=t+k;A、t[1][2]B、t[2][0]C、t[2][1]D、t[2][2]下面表达式之值为?x?(或其ASCII码值为120)的是:【】9、已知枚举类型定义:enuma{ONE=5,TWO=3,THREE};则THREE的值的是A、*(*p).sB、*++(++p)->s【】C、p->s[p->n[0]]D、(*++p).s[*(*p).n]-1A、1B、2C、4D、05、链表具备的特点是【】10、设有以下说明和语句,【】A、链表由一系列包含数据域和指针域的结点组成structpacked{B、插入和删除不需要移动任何元素C语言程序设计试卷共28页第1页:..C、可随机访问任意一个结点D、所需存储空间与其长度成正比三、填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值并填入各2、本小题的程序段如下:题后面的括号中,各题的表达式相互无关。int*p1;shortx[]={-1,0,1},*p=x;unsignedshorty=8;【】1、*(p+1)?y+x[1]:y-x[1]【】2、y=~x[1]【】3、x[2]|0x10【】4、y>>x[2]【】5、~(*p<<3)3、创建一个含有30个元素的动态数组table,元素类型为structREC的程序段如本大题的第6题至第10题请参考下面的说明,请计算出表达式的值并填入各下:题前面的括号中,各题的表达式相互无关。structREC{structT{charname[8];charc;charsex;char*s;intscore;intx;}*table;table=(structREC*)malloc(sizeof(structREC));【】6、(++p)->x【】7、p->c+(p+1)->x【】8、*(++p)->s【】9、++p->s[1]【】10、*p++->s++4、本小题的程序段如下:四、判断改错题(先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、计算数学表达式(b2-4ac)/2对应的程序段如下:floata,b,c,delta;5、将变量x按位左移n位的宏定义为:delta=(b*b-4*a*c)*(1/2);#defineROL(x,n)(x)<<=(n)C语言程序设计试卷共28页第2页:..五、简答题(本大题共5小题,每小题4分,共20分)5、设a是有2个元素的函数指针数组,数组中每个元素所指向的函数带有一个数组指针类型的形参,该形参指向有3个元素的整型数组,而函数返回值的类型与该形参类型相同;请写出相应的声明语句。1、设有声明intx=1,y=2,t;请写出一个C表达式将x、y值交换。六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)2、请写一个C表达式,其结果是3个整型变量a、b、c中数值居中的那个变量的值。1、请写出下面程序的运行结果。intx=10;voidmain(void){{3、请写一个C表达式,将整数k的高字节作为结果的低字节,整数p的低字节作intx=1;为结果的高字节,拼成一个新的整数。}}4、请解释声明语句char*(*(*pa)[8])(int(*)(int));所声明标识符pa的数据类型。2、请写出下面程序的运行结果。C语言程序设计试卷共28页第3页:..m--;voidfun(intn)while(*(t+n)){n++;staticx=1;for(i=m;i>=m/2;i--)x*=n;*(s+i+n)=*(s+i);for(i=0;i<n;i++)}*(s+i+m/2)=*(t+i);voidmain(void)returns;{}inti;for(i=1;i<8;i++)if(i%2)continue;elsefun(i);}4、请写出下面程序的运行结果。#defineCHAR_BIT8typedefunsignedshortintUINT16;3、请写出下面程序的运行结果。voidbit_print(int);char*strmins(char*,char*);voidbit_print(intx)voidmain(void){{UINT16i;UINT16n=sizeof(UINT16)*CHAR_BIT;UINT16mask=1<<(n-1);}for(i=1;i<=n;++i){putchar(!(x&mask)?'0':'1');char*strmins(char*s,char*t)x<<=1;{if(!(i%CHAR_BIT)&&i<n)inti,m=0,n=0;putchar('');while(*(s+m++))};putchar('');C语言程序设计试卷共28页第4页:..}(*fp_ary[0])(a,c);voidmain(void){p=(*fp_ary[1])(a,p);UINT16x[3]={7,3,1},i,n=0;for(i=0;i<3;i++){}switch(i){case0:char*f1(char*p1,char*p2)bit_print(x[n++]);{break;char*p=p1;case1:while(*p++=*p2++);bit_print(x[n++]);returnp1;default:}bit_print(x[n]);}char*f2(char*p1,char*p2)}{}char*p=p1;while(*p++);p--,p--;f1(p,p2);returnp1;}5、请写出下面程序的运行结果。char*f1(char*,char*);char*f2(char*,char*);voidmain(void){char*(*fp_ary[2])(char*,char*)={f1,f2};七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本p=(*fp_ary[0])(d,b);大题共10空,每空2分,共20分。)1、本大题第①、②、③、④、⑤空请参阅下面的部分程序。C语言程序设计试卷共28页第5页:..[程序说明]下面是通过命令行方式输入若干数字串,再将数字串转换成为对应的}整数,然后对其进行排序和查找操作的部分程序test2009,请对其进行完善。如:在在提示符下输入test200961238**********并回车,程序对应/*BinarySearch是二分查找函数*/的运行结果如下:intBinarySearch(inta[],intx,intn)61238**********{5681236387185102intfront=0,back=n-1,middle;find=2while(front<=back){请将下面程序中①、②、③、④、⑤空处应该完善的内容填写在本小题后①、middle=__③;②、③、④、⑤后面的下划线处。if(x<a[middle])back=middle-1;intatoi(char*);elseif(x>a[middle])voidshellsort(inta[],intn);front=middle+1;intBinarySearch(inta[],intx,intn);elsereturn(____④______);/*atoi是将数字串转换为对应整数的函数*/}intatoi(char*s)return-1;{}intj=0,num=0;/*下面是带命令行参数的main函数*/num=①;intmain(intargc,char*argv[])returnnum;{}intn=argc,i,*a,x=8,find;if(argc<10)/*shellsort是shell法排序函数*/{voidshellsort(inta[],intn){return-1;intgap,i,j,t;}for(gap=n/2;gap>0;②)a=(int*)malloc((n-1)*sizeof(int));for(i=gap;i<n;i++)for(i=1;i<n;i++)for(j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap){a[i-1]=atoi(⑤);t=a[j];for(i=0;i<n-1;i++)a[j]=a[j+gap];a[j+gap]=t;}shellsort(a,n-1);C语言程序设计试卷共28页第6页:..for(i=0;i<n-1;i++)voiddel_nodes(ScrNode**headp,intx);voidmain(void){find=BinarySearch(a,x,n-1);ScrNode*head;intn;head=,建成后进先return0;出单向链表*/}print_list(head);/*显示*/n=count_fail(head);/*统计不及格人数*/①______⑥______;/*删除所有成绩为34的结点*/②print_list(head);}③/*从文本文件filename中依次读入成绩,将其建成一个后进先出单向链表*/④ScrNode*load_list(char*filename){⑤FILE*fin;ScrNode*head=NULL,*p;intx;2、本大题第⑥、⑦、⑧、⑨、⑩空请参阅下面的部分程序。if((fin=____⑦____)==NULL)[程序说明],(-1);中依次读入成绩,将其建成一个后进先出单向链表,并且对该单向链表完成创建、while(!feof(fin)){删除、统计、显示等操作。请将下面程序中⑥、⑦、⑧、⑨、⑩应该完善的内容p=(ScrNode*)malloc(sizeof(ScrNode));填写在本小题后⑥、⑦、⑧、⑨、⑩后面的下划线处。#include<>p->score=x;#include<>______⑧______;typedefstructscrnode{head=p;intscore;}structscrnode*next;fclose(fin);}ScrNode;return(head);ScrNode*load_list(char*filename);}voidprint_list(ScrNode*head);intcount_fail(ScrNode*head);/*输出head所指链表中各个结点数据域中成员的值*/C语言程序设计试卷共28页第7页:..voidprint_list(ScrNode*head)if(p==*headp)*headp=p->next;{else_____⑩______;ScrNode*p=head;t=p;while(p!=NULL){p=p->next;free(t);p=p->next;}}elsebreak;}}}⑥、/*用递归方式统计head所指链表中成绩不及格的结点*/intcount_fail(ScrNode*head)⑦、{ScrNode*p=head;⑧、=0;if(p!=NULL){⑨、__if(p->score<60)return(1+count_fail(p->next));elsereturn(_____⑨_____);⑩、}。else计算机学院2009-2010学年第2学期C语言程序设计考试试卷return0;一、单项选择题(在下面每小题的A、B、C、D四个备选项中,只有一个选项是}正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。)/*删除*head所指链表中所有与x值相同的结点*/1、能定义为用户标识符的是【】voiddel_nodes(ScrNode**headp,intx)A、x/2B、x_2C、、3x{2、-125的16位补码是【】ScrNode*p,*last,*t;A、0x807dB、0x807eC、0xff82D、0xff83p=*headp;=x+++y++中的词法元素(记号,即token)的数目是【】while(p!=NULL){A、5个B、6个C、7个D、8个while(p->score!=x&&p->next!=NULL){/*查找值x的节点*/4、关于0xfeededUL最准确的解释是,0xfeededUL是【】last=p;A、无符号长整型常量B、长整型常量p=p->next;C、有符号整型常量D、非法常量}5、下列正确的转义字符是【】if(p->score==x){/*找到*/A、、B、、C、、D、'\'C语言程序设计试卷共28页第8页:..6、设有说明:intx=-1;则执行printf(“%u”,x);语句的输出是【】以下说法正确的有A、-1B、1C、ffffD、65535A、首次调用fun函数时,fun函数返回0B、每次调用fun函数时,:charx[]=“a”;则字符数组x的大小是【】函数返回0A、0B、1C、2D、3C、变量z与变量y的作用域相同D、【】存期相同A、intx[10],p=x;B、intx[10][20],(*p)[10]=x;5、设有说明【】C、intx[5][6],*p[6]=x;D、intx[1][2],(*p)[2]=x;structbits{:union{unsignedshortintl_byte:8,h_byte:8;charc;shorth;longl;};}m;unionu{则变量m的存储区域是【】unsignedshortintx;A、1字节B、2字节C、4字节D、7字节structbitsb;:intx=1,y=2,z=3;则下面表达式的值为1的是【】}a;=0xf00f;之后,下面表达式的值为0的有A、(y&z)>>1&xB、x&y&zC、y--|xD、x^xA、<<4&0xffB、&、>>8D、>>4二、多项选择题(下面每小题的A、B、C、D四个备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)三、填空题(本大题共10小题,每小题1分,共10分。)!=高的有:【】A.~B.<<C.&D.&&本大题的第1题至第5题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。2、下列选项是C的合法常量有【】unsignedi=0,j=1;A、‘b’B、、C、E-2D、0123inta;3、对数组元素a[i][j][k],下面正确的表示有【】【】(1)j++?j++:i++A、(*(a+i))[j][k])B、*(*(*(a+i)+j)+k)【】(2)i=i!=jC、*(*(a+i)[j]+k)D、*(a[i][j]+k)【】(3)a=~i^j4、设有程序片段:【】【】(4)2<<++i+j<<2intx;【】(5)-i>>15&&-j<<15intfun(void)本大题的第6题至第10题请参考下面的说明,请计算出表达式的值并填入各{inty=1;staticintz=1题前面的括号中,各题的表达式相互无关。y++;z+=1;intx[3]={-1,0,1},y[3]={-2,0,2},z[3]={-3,0,3};returny-z;struct{}char*s;C语言程序设计试卷共28页第9页:..int*t;strcat(a,b);【】(6)(++p)->s[1]【】(7)++*p->t}【】(8)*(++p)->t【】(9)(*p).s[(p+2)->t[2]]【】(10)(p+2)->t[++p->t[2]]四、判断改错题(先判断下面各题中是否存在错误;如果存在错误,请改正之;5、下面是计算并输出1!,2!3!4!5!的程序否则不必改。本大题共5小题,每小题2分,共10分。)intfactorial(intn)1、inti=5,a[i];{while(i-->0)intk=1;k*=n;returnk;}voidmain(void){2、定义一个指向常量的常指针的声明如下:inti;constchar*p=;for(i=1;i<6;i++)}3、将x左移n位的宏定义如下:#defineSHIFTL(x,n)(x)>>(n)五、简答题(本大题共5小题,每小题4分,共20分)1、设x为一个存放整数的16位有符号整型变量,请运用单个运算符书写关于x4、字符串的连接的四个C表达式,并使表达式的结果为0。如x–x。#include<>#include<>voidmain(void){C语言程序设计试卷共28页第10页:..2、请写一个C表达式,将unsignedshort类型变量x的高字节送入unsignedchar六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)类型变量ch中。1、请写出下面程序的运行结果。voidmain(void){inti=0,j=4;3、已知函数f中只定义有一个结构类型(structstu)的指针变量pstu,pstu指inta[]={1,3,5,7,9};向的结构要求只能通过函数creat动态生成。试写出两种creat函数原型及其在for(;i<5;){函数f中相应的调用语句。if(i>j)break;for(;j>0;){break;}}4、。}。。、、。、请写出下面程序的运行结果。#include<>voidmain(){inti;chars[]=”xyz”;5、设p是函数指针,所指向的函数有两个整型参数且返回一个指向有5个元素的for(i=0;i<3;i++)字符数组的指针,请写出相应的声明语句。switch(i){C语言程序设计试卷共28页第11页:..}#include<>}voidf1(char*s[],intn);intf2(char*s1,char*s2);voidf1(char*s[],intn){3、请写出下面程序的运行结果。char*temp;#include<>inti,j;#defineM5for(i=0;i<n-1;i++)#defineN2for(j=i+1;j<n;j++)voidmain()if(f2(s[i],s[j])>0){{temp=s[i];statica[M];s[i]=s[j];inti,n,k=M-1,*p1,*p2;s[j]=temp;}p1=p2=&a[k];}for(n=0;n<k;n++){for(i=0;i<N;++i){intf2(char*s1,char*s2)while(1){{if(++p1>p2)p1=a;if(!*p1)break;}s1++,s2++;}return*s1-*s2;*p1=-1;}for(i=0;i<M;++i)voidmain(){}inti;for(i=0;i<M;++i)char*menu[]={}};4、请写出下面程序的运行结果。f1(menu,4);C语言程序设计试卷共28页第12页:..for(i=0;i<4;i++)result(array[2],6,3);puts(menu[i]);}}七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本5、请写出下面程序的运行结果。大题共10空,每空2分,共20分。)#include<>1、本大题第①、②、③、④、⑤空请参阅下面的部分程序。typedefint(*F)(int,int);[程序说明]下面程序可以对一个文本文件中存放的少量整型数据(以空格分隔)typedefstructfuns{进行升序排序,并将结果写入到另一个文本文件中。如执行命令行:Ffun;charop;。}funs;据同样应以空格分隔。请在下面①、②、③、④、⑤处开始的下划线处填入合适内容来完善该程序。intadd(intx,inty){/**/returnx+y;}intsub(intx,inty){#defineNUM100returnx-y;}①;intmul(intx,inty){returnx*y;voidsort(inta[]){}inti,j,t;intdiv(intx,inty){for(i=0;i<length-1;i++)returnx/y;for(j=i;j<length;j++)}if(a[i]>a[j])intresult(funsfun,intx,inty){②;}}voidmain(void){FILE*openfile(char*filename,char*openmode){funsarray[4]={{add,'+'},{sub,'-'},{mul,'*'},{div,'\'}};FILE*fp;C语言程序设计试卷共28页第13页:..if(③==NULL){②exit(-1);③}returnfp;④}⑤voidmain(intargc,char*argv[]){2、本大题第⑥、⑦、⑧、⑨、⑩空请参阅下面的部分程序。FILE*in,*out;[程序说明]下面程序用单向链表实现两个超长整数的加法运算,由键盘输入两个intnumbers[NUM];超长整数,经运算后输出和值。请在下划线上填入适当的内容,使程序完善。intx,i;if(argc<2){#include<>#include<>exit(-1);}typedefstructintnode{charc;structintnode*next;}IntNode;while(!feof(in)){voidcreatlist(IntNode**);numbers[length++]=x;IntNode*addlist(IntNode*,IntNode*);}voidoutlist(IntNode*);④;for(i=0;i<length;i++){voidmain(void)⑤;{}IntNode*head1=NULL,*head2=NULL,*head3=NULL;fclose(in);fclose(out);creatlist(&head1);creatlist(&head2);}head3=addlist(head1,head2);outlist(⑥);①}C语言程序设计试卷共28页第14页:..voidcreatlist(IntNode**headp)carry=(hd1->c-'0'+carry)/10;{hd1=hd1->next;IntNode*head=NULL,*p;}charch;while(hd2!=NULL){tl->next=(IntNode*)malloc(sizeof(IntNode));while((ch=getchar())>='0'&&ch<='9'){tl=tl->next;p=(IntNode*)malloc(sizeof(IntNode));tl->c=(hd2->c-'0'+carry)%10+'0';p->c=ch;carry=(hd2->c-'0'+carry)/10;⑦;hd2=hd2->next;head=p;}}if(carry){*headp=head;tl->next=(IntNode*)malloc(sizeof(IntNode));}tl=tl->next;tl->c='1';IntNode*addlist(IntNode*hd1,IntNode*hd2)}{⑨;IntNode*hd,*tl;returnhd;intcarry=0;}hd=(IntNode*)malloc(sizeof(IntNode));voidoutlist(IntNode*hd)hd->next=NULL;{tl=hd;if(hd!=NULL){while(hd1!=NULL&&hd2!=NULL){⑩;tl->next=(IntNode*)malloc(sizeof(IntNode));putchar(hd->c);tl=tl->next;}tl->c=(hd1->c-'0'+hd2->c-'0'+carry)%10+'0';}carry=⑧;hd1=hd1->next;⑥hd2=hd2->

华中科技大学C语言试卷 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数28
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小屁孩
  • 文件大小812 KB
  • 时间2024-03-27