下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言程序设计习题及答案

C语言程序设计习题及答案.doc

C语言程序设计习题及答案

Aurora飞
2018-12-23 0人阅读 举报 0 0 暂无简介

简介:本文档为《C语言程序设计习题及答案doc》,可适用于IT/计算机领域

C语言程序设计习题及答案第一部分C语言基础一、单项选择(以下不是C语言的特点的是()。(A)C语言简洁、紧凑(B)能够编制出功能复杂的程序(C)C语言可以直接对硬件进行操作(D)C语言移植性好(下列浮点数的表示中正确的有()。(A)(B)E(C)e(D)e(字符型常量在内存中存放的是()。(A)ASCII代码(B)BCD代码(C)内部码(D)十进制码(“BBnr”在内存中占的字节数是()此字符串的长度为()。(A)(B)(C)(D)(E)(F)(对于语句scanf(“ff,z=f”,x,y,z),其合法的输入形式为()。(A)(B),,(C),(D),z=(下列运算符中结合方向为自左向右的是()。(A),(B)(C),(D)――(若有intx则sizeof(x)和sizeof(int)两种描述()。(A)都正确(B)值不一样(C)前者正确(D)后者正确整型变量x=,y=,经下列计算后,x的值不等于的是()。(A)x=(x=,x*)(B)x=y>:(C)x=(y)(y)(D)x=y*单精度变量x=,y=,下列表达式中y的值为的是()。(A)y=x*(B)y=x(C)y=x(D)y*=x若整型变量i=,j=,作运算j=iji后,i的值为(),j的值为()。(A)(B)(C)(D)设有整型变量x=,表达式(x)(x|)的值为()。(A)(B)(C)(D)设有整型变量x,其值为,则表达式:(x>>)|(x>|x^)的值为()。(A)(B)(C)(D)有整型变量x,单精度变量y=,表达式:x=(float)(y*((int)y))执行后,x的值为()。(A)(B)(C)(D)表达式::,,==>=:,的值为()。(A)(B)(C)(D)以下选项中属于C语言中数据类型的是()。(A)复数型(B)逻辑型(C)双精度型(D)集合型在C语言中不正确的int类型的常数是()。(A)(B)(C)(D)xAF语句:printf(“dn”,(a=)(b=))的输出结果是()。(A)无输出(B)结果不确定(C)(D)当c的值为时在下列选项中能正确将c的值赋给变量a,b的是()。(A)c=b=aB)(a=c)||(b=c)(C)(a=c)(b=c)(D)a=c=b(下列程序的输出结果是()。(A)(B)(C)(D)main(){doubled=intx,yx=y=(x)printf(“dn“,(*p)cCpcD*pa(下面定义中对成员变量x的引用形式中正确的是。structmm{intx,y}structaa{charcstructmmzb}blAblzbxBblxCblmmxDzbx(下列说法中正确的是。Atypedef可以用来定义新的数据类型。B用typedef既可以声明新的类型名又可以定义变量。C用typedef不能定义新的数据类型但可以定义变量。Dtypedef只是用来声明新的类型名不产生新的数据类型也不可以定义变量。(下列说法中错误的是。A枚举类型中的枚举元素是常量。枚举类型中枚举元素的值按定义时的顺序分别是、、、„„不可以在定义时指B定为其它值。C一个整数不能直接赋给一个枚举变量应先进行强制类型转换。D枚举类型的变量之间以及枚举类型的变量与枚举元素之间可以做判断比较。(下列说法中错误的是。A对链表中的每个结点只能顺序访问不能随机访问。B建立链表时各次用malloc分配的内存空间是内存中的连续的一段空间。C结构体变量作为单向链表的结点该变量中至少要有一个指针类型成员用来存放下一个结点的地址。D与数组相比较链表的优点是可以根据需要开辟内存单元不会浪费内存。(有如下程序段则说法中正确的是。enumweek{Mon,Tue,Wed,Thu,Fri,Sat,Sun}enumweekdayscanf(“d”,day)if(day==Sat||day==Sun)printf(“Itisaholiday!(d)n”,day)A此程序段的scanf语句不正确。B此程序段的if语句不正确。C此程序段正确当输入为,时输出为Itisaholiday!(Sat)。D此程序段正确当输入为,时输出为Itisaholiday!()。(以下说法中不正确的是。A为了将一个结构体变量的值传递给另一个函数可用该结构体变量做实参形参也必须是同类型的结构体变量也可用指向该结构体变量的指针做实参。B若malloc(或calloc)函数执行成功函数返回一个指向分配域起始地址的指针否则返回空指针()。C若想链表中的某个结点删除不但要撤消它与其它结点的链接关系而且还必须把它从内存中抹掉。D枚举元素a作为常量它的值对应一个整数该整数可以用“printf(“d”a)”输出。(执行“structboy{charnumintagefloatscore}tom”后下面错误的语句是。Ascanf(“c,d,f”,tom)Bscanf(“c”,tomnum)Cscanf(“d”,tomage)Dscanf(“f”,tomscore)(定义结构体变量如下:structbob{charchastructbob*next}ab*p=a*q=ba和b可以作为链表中的两个结点。在下列个语句中不能把结点b连接到结点a之后的语句是。Aanext=qBpnext=bCp>next=bD(*p)next=q(如下定义的变量x所占内存字节数是。unionuu{charstintilongm}structss{intcunionuud}xABCD(下面程序输出结果是。ABCDstructxyz{intabc}main()}{}}intt{structxyzs={{t=sasbscsaprintf(“dn”,t)}(如下声明的枚举类型的个语句中正确的是。Aenummath={onetwothree}Benummath{one=two=three}Cenummath={“one”“two”“three”}Denummath{“one”“two”“three”}执行如下语句后错误的scanf语句是。structstu{charnameintageintsex}sup*pp=sup”supage)Ascanf(“s”supname)Bscanf(“dCscanf(“d”(p>sex))Dscanf(“d”p>age)(执行如下语句后对std的成员num引用方式不正确的是。structstu{charsexintnum}std*pp=stdAstdnumB*pnumC(*p)numDp>num(执行如下语句后表达式的值为是。structper{intnumstructper*next}structpera={aa‘’}*pp=aAp>numBp>numC(*p)numDp>num二、填空(自动类型的结构体变量(填:“可以”或“不可以”)在定义时赋初值但同类型的共用体变量(填:“可以”或“不可以”)在定义时赋初值。(构体变量(填:“可以”或“不可以”)直接做函数的参数但共用体变量(填:“可以”或“不可以”)直接做函数的参数。(声明结构体类型如下:structlx{charccharsintm}若要定义一个此类型的结构体变量a并将a的各成员初始化为:c中存放’n’、s中存放”person”m中存放,定义语句为:。(有结构体和共用体的变量定义如下若int型变量占两个字节char型变量占一个字节float型变量占,个字节则变量bl占用的内存空间的字节数为bl占用的内存空间的字节数为。(structaa{intacharcfloatx}bl(unionbb{intacharcfloatx}bl(使用关键字typedef声明一个新的类型名的步骤为:((,)按定义变量的方法写出定义式(,)(,)(,)使用新类型名去定义变量。(下程序段的输入结果为。enummonth{Jan,Feb,Mar,Apr=,May,Jun,Jul,Aug,Sept,Oct,Nov,Dec}enummonthmon=Mar,mon=Septprintf(“d,d”,mon,mon)(执行如下程序段后的输出结果为该结果是。unionmm{charcintk}blblc=’a’blk=printf(“c”,blc)(在如下程序段中若int型变量占,个字节float型变量占,个字节char*型变量(指向字符型的指针变量)占个字节则此程序段执行后的输出结果为为结构体变量b分配的内存空间为个字节。unionuu{intafloatx}structmm{char*punionuuy}bblya=blp=”student”printf(“d,sizeof(structmm))(有如下程序段:s’,,‘t’}structmm{intncharp}a={,‘structmm*p=a则以下表达式的值分别是多少,(,)*p>p:。(,)*(p)>p(,)(p)>n:。(,)p>n(执行下面程序段后输出结果为:。structcoordinate{intx,ystructcoordinate*next}point={,,point,,,point,,,point,,,}structcoordinate*p=pointprintf(“d,dn”,(*(p)>next)x,py)(如下定义变量a后sizeof(a)的值是sizeof(as)的值是。structdate{intdayintmonthintyearunion{intsfloats}s}a(a是structlist类型的结构体变量它有个成员:sp、next、datasp是指向字符串的指针成员next是指向本结构的指针成员data用来存放整数。填空完成结构体的类型说明和变量a的定义。structlist{char*sp}a执行下面程序段后输出结果为:。main(){enummeiju{mj=mj=mj}char*a={“AA”“BB”“CC”“DD”}printf(”sssn”,amj,amj,amj)}函数createlist作用是建立一个带头结点的单向链表新结点插在链表的末尾该函数的返回值是链表的头指针最后一个结点的next成员放作为链表结束标志。next是本结构类型指针成员。读入字符*时表示建立链表结束。请填空。structjiedian{charchastructjiedian*next}createlist(){structjiedian*h,*s,*rcharchh=(structjiedian*)malloc(sizeof(structjiedian))r=hch=getchar()while(ch!=’*’){s=(structjiedian*)malloc(sizeof(structjiedian))s>cha=r>next=sr=sch=getchar()}r>next=return(h)}(非空单向链表的每个结点为“structstu{charchstructstu*next}”结构体类型下面的函数将结点的ch值为‘D‘的结点从链表中删除。函数的两个形参分别接收主调函数传递过来的链表的头结点的指针和字符‘D‘(头结点的ch值也可能为‘D‘)。请填空。(最后一个成员的next值是)charzf)structstu*erase(structstu*head{structstu*p*ppl,headp,pdo{if(zf,,p>ch)if(p==head){head=p>nextp,p>nextp=head}else{p>next,p>nextp,p>next}else{p,p}}while(p!,)}return(head)}(非空单向链表的每个结点为“structchj{intnintscorestructchj*next}”结构体类型。下面的函数根据每个结点的成员n的值进行计算凡是成员n能被整除的其成员score值累加到s上否则累加到s上输出s和s的值。函数的形参接收主调函数传递过来的链表的头结点的指针。请填空。(最后一个成员的next值是)voidprint(structchj*head){structchj*pints=,s=p=headwhile(p){if(p>n==)s=sp>scoreelses=sp>scorep=}printf(“dtdn”,s,s)}非空单向链表的每个结点为“structlink{intnumstructlink*next}”结构体类型。下面函数比较各个结点的num成员的值将最大的num值找出打印并返回最大值所在结点的指针。函数的形参接收主调函数传递过来的链表的头结点的指针。最后一个成员的next值是)请填空。(structlink*max(structlink*head){structlink*p,*qintm=head>nump=q=headwhile(p!=){if(p>num>m){q=pm=p>num}p=p>next}printf(“dn”,)return()}非空单向链表的每个结点为“structjilu{intnumstructjilu*link}”结构体类型每个结点按成员num值降序排列。下面函数往链表中插入一个新结点插入后的链表仍是按成员num值降序排列。函数的形参接收主调函数传递过来的链表的头结点的指针和新结点的指针。请填空。(最后一个成员的next值是)structjilu*charu(structjilu*head,structjilu*xin){structjilu*p,*p,*pp=headp=xinif(head==){head=p}elsewhile((p>num<p>num)(p>link!=)){p=pp=p>link}if(p>num>=p>num){if(head==p){p>link=headhead=p}else{p>link=pp>link=p}else{p>link=}return(head)}三、判断正误在程序中声明一个结构体类型后将在内存中为此类型分配存储空间。结构体类型中的成员名可与结构体以外的变量名相同。声明结构体类型时必须要指定结构体名称。结构体内的成员不可以是结构体类型的变量。结构体变量的地址和结构体变量的成员的地址均可以被引用。共用体变量的地址和它各成员的地址都是同一地址。被定义为指向某结构体类型的变量的指针不能直接指向结构体中的某一成员。共用体内的成员可以是结构体变量结构体内的成员也可以是共用体变量。可以对结构体变量进行整体输入输出。共用体变量可以作为函数的参数。对于存放共用体变量的内存段在某一时刻只有一个共用体变量的成员有效。就是到当前为止最后一次存放的成员有效。两个相同类型的结构体变量可以相互整体赋值。(结构体内的成员的作用和地位相当于普通变量可以单独使用像普通变量一样进行其类型允许的各种运算。(结构体内的各成员的类型不允许相同。(在所有的运算符中成员(分量)运算符“(”的优先级最高。(结构体变量不允许在定义时指定初始值。(像普通数组一样结构体数组各元素在内存中也是连续存放的。四、阅读程序,写出运行结果:(#include“stdioh”main(){charstrstructdata{intyear,month,day}todaystructaddress{charname,street,city,stateunsignedlongintzip}wangprintf({“char:dt”,sizeof(char)}printf({“int:dt”,sizeof(int)}printf({“long:dt”,sizeof(long)}printf({“float:dt”,sizeof(float)}printf({“double:dt”,sizeof(double)}printf({“str:dt”,sizeof(str)}printf({“data:dt”,sizeof(structdata)}printf({“wang:dt”,sizeof(wang)}}(#include”stdioh”structjgt{intaintb}sz={,,,}main(){printf(“dn”,szb*sza)}(#include“stdioh”structstu{intnumcharnameintage}voidfun(structstu*p){printf(“sn”,(*p)name)}main(){structstustudents={{,”Zhang”,},{,”Wang”,},{,”Zhao”,}}fun(students)}(#include“stdioh”structtree{intxchar*s}t*t是全局变量*func(structtreet)n”,tx,ts)return(){tx=ts=”computer”printf(“d,s}*这里的t是形参局部变量调用结束t就被释放。*main(){tx=ts=”minicomputer”func(t)printf(“d,sn”,tx,ts)}(#include“stdioh”structstr{charcchar*s}main(){structstrs={{“ABCD”,”EFGH”},{“IJK”,”LMN”}}structstr{structstrsrintd}s={“OPQ”,”RST”,}structstr*pp=sp=sprintf(“s”,p>s)***printf(“c”,sstrc)*}(#include<stdioh>main(){union{longiintkchariichars}mixmixi=xprintf(“mixi=lxn”,mixi)printf(“mixk=xn”,mixk)printf(“mixii=xn”,mixii)printf(“mixs=xtmixs=xn”,mixs,mixs)printf(“mixs=xtmixs=xn”,mixs,mixs)}(#include”stdioh”main(){union{charcinti}ttc=’A’ti=printf(“d,d”,tc,ti)}(#include”stdioh”main(){union{longkintkcharkchark}mchar*pmk=xp=(char)mkprintf(“c,c,c,cn”,*p,*(p),*(p),*(p))printf(“lxn”,mk)printf(“x,cn”,mk,mk)printf(“x,cn”,mk,mk)printf(“c,c,c,c”,mk,mk,mk,mk)}(#include”stdioh”main(){sturctdate{intyearmonthday}todayunion{longiintkcharii}mixprintf(“date:dt”,sizeof(structdate))printf(“mix:dn”,sizeof(mix))}(#include”stdioh”structnc{intxcharc}main(){structnca={,’U’}func(ax,ac)printf(“d,c”,ax,ac)}func(intm,charc){intkfor(k=k<=mk)printf(“c”,c)printf(“n”)}(#include“stdioh”main(){staticstructs{charc,*s}s={“abc”,”def”}staticstructs{char*cpstructsss}s={“ghi”,{“jkl”,”mno”}}printf(“ccn”,sc,*ss)printf(“ssn”,sc,ss)printf(“ssn”,scp,ssss)printf(“ssn”,scp,ssss)}(链表的结点由如下结构体组成:structstr{intkcharcfloattstructstr*next}。传递给函数opert的实参是有个结点的链表的头指针(最后一个结点的next成员值是)该链表的各结点的数据部分如下:{,’A’,},{,’B’,},{,’C’,},{,’D’,},{,’E’,}。写出函数opert的运行结果。opert(structstr*h){structstr*pp=hfloatsum=if(h!=)do{if(p>k==)printf(“c,ft”,p>c,p>t)elsesum=sump>cp>tp=p>next}while(p!=)printf(“sum=fn”,sum)}(链表的结点由如下结构体组成:structop{charcintkstructop*next}。传递给函数find的实参是有个结点的链表的头指针(最后一个结点的next成员值是)该链表的各结点的数据部分如下:{’a’,},{’u’,},{’s’,},{’f’,},{’b’,}。写出函数find的运行结果。find(structop*head){structop*pp=headif(head!=)while(p!=)’||(*p)c==’f’)printf(“dt”,(*p)k){if((*p)c==’ap=p>next}}#include<stdioh>typedefstructstr{charcchar*s}stmain(){staticsts={{“ABCD”,“EFGH”},{“IJK”,“LMN”}}staticstructstr{stsrintd}s={“OPQ”,“RST”,}st*p={s,s}printf(“ct”,p>c)printf(“st”,(p)>s)printf(“ct”,ssrc)printf(“dt”,sd)}(structstud{intaint*t}u,*pmain(){intk=,mprintf(“n”)for(m=m<m){uma=kumt=umak=k}p=upprintf(“d,dn”,(p)>a,(p)>a)}(unioninks{intaintb}unioninkssm,*pmain(){intk,n=for(k=k<k){smka=nsmkb=smkan=n}p=smprintf(“d,”,p>a)printf(“d”,p>a)}(main(){unionexp{struct{intxinty}saintainta}aveavea=avea=avesax=avea*avea*执行此语句后avea和avea值都是*avesay=aveaaveaprintf(“d,dn”,avesax,avesay)}(structwei{charlowcharhigh}uniongong{structweikiteintword}gymain(){gyword=xwordis:xt”,gyword)printf(“printf(“highis:xt”,gykitehigh)printf(“lowis:xt”,gykitelow)gykitelow=xprintf(“wordis:xn”,gyword)}(enumcolor{red,yellow,green,blue,white,black}char*name={“red”,“yellow”,“green”,“blue”,“white”,“black”}main(){enumcolorco,coco=greenco=blackprintf(“d,d,t”,co,co),name(int)co,name(int)co)printf(“s,sn”}五、编写程序(有个学生的数据记录每个记录包括“学号”、“姓名”和门课的成绩。请用结构体数组实现对他们的输入输出操作。(有若干个学生的数据记录每个学生的数据记录包括“学号”、“姓名”和门课的成绩。请计算每个学生门课的平均成绩然后输出每个学生的数据记录(包括平均成绩)。(N个人(每个人有一个编号按顺序取到N之间的一个自然数)围成一圈从第个人开始顺序报号、、、„、M凡报到“M”者退出圈子然后留在圈子里的从下一个人开始继续顺序报号、、、„、M报到“M”者又退出圈子如此继续直到圈子里只有一个人。打印最后留在圈子里的人的编号。(建立一个链表每个结点包括:名称、数量(值不小于)。输入一个数量值将与此数量值相同的结点都从链表中删除。(编一个函数将unsignedlong型整数的前个字节和后个字节分别作为两个unsignedint型整数输出(每个unsignedint型整数占个字节)。第九部分结构体与共用体参考答案一、单项选择、C、A、B、A、A、B、D、,、B、A、D、B、,、D、C、A二、填空、可以不可以、可以不可以、structlxa{‘n’,”person”,}、,、将变量名换成新类型名在最前面加上关键字typedef、,、B成员k在内存所占个字节中的低位对应的内容、,、s,t,,、,、、structlistnextintdata(或颠倒顺序)、DDBBCC、structjiedian*ch、p,p>next、p>next、mq、p>link=p>link=p三、判断正误四、阅读程序,写出运行结果char:int:long:float:double:str:date:wang:Zhao,computer,minicomputer(变量做参数值传递单向的。不能改变全局变量t的值。)MNQmixi=mixk=mixii=mixs=mixs=mixs=mixs=,D,C,B,A,D,DD,C,B,Adate:mix:,UuuuuuuadabcdefghimnohinoACEsum=(BLMNQ,(执行“printf(“d,dn”,(p)>a,(p)>a)”时对(p)>a,(p)>a部分是从右向左计算。即先计算(p)>a值为再计算(p)>a值为。),,wordis:highis:lowis:wordis:,,green,black五、编写程序#defineMstructstud{charnumcharnameintscore}main(){inti,jstructstudsMfor(i=i<Mi){scanf(“s”,sinum)scanf(“s”,siname)for(j=j<=j)scanf(“d”,siscorej)}for(i=i<Mi){printf(“ss”,sinum,siname)for(j=j<=j)printf(“d”,siscorej)printf(“n”)}#defineM*不妨设有M个学生*structstud{charnumcharnameintscorefloataver}main(){intijkstructstudsMfor(i=i<Mi){scanf(“s”,sinum)scanf(“s”,siname)k=for(j=j<=j){scanf(“d”,siscorej)k=ksiscorej}siaver=k}for(i=i<Mi){printf(“ss”,sinum,siname)for(j=j<=j)printf(“d”,siscorej)printf(“f”siaver)printf(“n”)}#defineN*不妨设N为*#defineM*不妨设M为*structper{intnumintnext}shuNmain(){inti,count=,hfor(i=i<=Ni){shuinum=i*第i个人的编号*shuinext=i}*第i个人的后面的人的编号*shuNnum=NshuNnext=*编号为N的人的后面的人是编号为的人*h=Nwhile(count<N){i=while(i!=M)*顺序报号报到M时报号为M者从圈里退出*{h=shuhnextif(shuhnum!=)i}printf(“d”,shuhnum)*打印从圈里退出的人的编号*shuhnum=*凡从圈里退出的人编号变为*count}for(i=i<=Ni)*最后留在圈子里的人的编号不等于*if(shuinum!=)printf(“d”,shuhnum)*打印最后留在圈子里的人的编号*}structcailiao{charnameintshustructcailiao*next}structcailiao*creat(){structcailiao*head,*p*pp=p=(structcailiao*)malloc(sizeof(structcailiao))scanf(“s”,p>name)scanf(“d”,p>shu)head=pwhile(p>shu>=)*若输入的值小于则建立链表结束*{p=(structcailiao*)malloc(sizeof(structcailiao))scanf(“s”,p>name)scanf(“d”,p>shu)p>next=pp=p}p>next=return(head)}structstu*dele(structstu*headintslg){structstu*p*ppl,headp,pdo{if(slg,,p>shu)if(p==head)>nextp=head}{head=p>nextp,pelse{p>next,p>nextp,p>next}else{p,pp,p>next})}while(p!,}return(head)}main(){structstu*headintsshead=creat(head)scanf(“d”,ss)dele(headss)}Voidhan(unsignedlongk){unionterm{unsignedintfenunsignedlongw}num,*pp=numnumw=kprintf(“longintislxn”,k)printf(“lowpartnumis:x,highpartnumisxn”,p>fen,p>fen)}main(){unsignedlonguu=xhan(u)}第十部分位运算一、单项选择(设intb=表达式(b>>)(b>>)的值是()。A)B)C)D)(设有整型变量x其值为则表达式:(x>>)|(x>|x^)的值为()。A)B)C)D)(设有整型变量x=表达式(x)(x|)的值为()。B)C)D)A)(设inta=b则执行b=a>>语句后,b的结果是()。A)B)C)D)(设inta=b则执行b=a<<语句后,b的结果是()。A)B)C)D)(设有以下语句则c的二进制的值是()。chara=b=cc=a^b<<A)B)C)D)(给出以下程序的执行结果。()()()()()#include<stdioh>main(){inta=,b=a<<=bprintf(“dn”,a)输出a>>=bprintf(“dn”,a)输出a=bprintf(“dn”,a)输出a|=bprintf(“dn”,a)输出a^=bprintf(“dn”,a)输出}A)B)C)D)A)B)C)D)A)B)C)D)A)B)C)D)A)B)C)D)二、填空(设二进制数a是若想通过异或运算a^b使a的高位取反低位不变则二进制数b应是。(位运算符(填能或不能)用于浮点数。(在C语言中运算符用作运算和运算。(按位与运算:inta=b=c=ab变量c的值是。(按位或运算:inta=b=c=a|b变量c的值是。(按位异或运算:inta=b=c=a^b变量c的值是。(按位取反运算:inta=c=~b变量c的值是。(左移运算:inta=c=a<<,变量c的值是。(右移运算:inta=c=a>>,变量c的值是。(设intx=表达式x^x、x|x、~x^x的值分别为、、。(设intx=表达式~xx、x|x、!xx、x>>~的值分别为、、。(C语言允许在一个结构体中以位为单位来指定其成员所占内存长度这种以位为单位的成员称为。第十部分位运算参考答案一、单项选择(A(B(A(D(C(A((C)(A)(C)(B)(B)二、填空(xf或(不能(按位与取地址。((((((((。位段(或位域)第十一部分文件一、单项选择,(当已存在一个文件abctxt时执行函数fopen(“abctxt”,“r”)的功能是()。A打开文件abctxt清除原有的内容B打开文件abctxt只能写入新的内容C打开文件abctxt只能读取原有内容D打开文件abctxt可以读取和写入新的内容(函数fopen()的mode取值“w”和“a”都可以写入数据它们之间的差别是()。A“w”可以在中间插入数据“a”只能在末尾追加数据B“w”和“a”只能在末尾追加数据C在文件存在时“w”清除原文件数据“a”保留原文件数据D“w”不能在中间插入数据“a”只能在末尾追加数据(以下不能将文件位置指针重新移到文件开头位置的函数是()。Arewind(fp)Bfseek(fp,,SEEKSET)Cfseek(fp,(long)ftell(fp),SEEKCUR)Dfseek(fp,,SEEKEND)(检测fp文件流的文件位置指针在文件头的条件是()。Afp==Bftell(fp)==Cfseek(fp,,SEEKSET)Dfeof(fp)(以下程序的功能是()。main(){FILE*fpcharstr=“HELLO”fp=fopen(“PRN”,“w”)fputs(str,fp)fclose(fp)}A在屏幕上显示“HELLO”B把“HELLO”存入PRN文件中C在打印机上打印出“HELLO”D以上都不对(假设不存在文件abc如下程序执行后文件abc的内容是()。#include<stdioh>main(){FILE*fpchar*str=“first”char*str=“second”if((fp=fopen(“abc”,“w”))==){printf(“Cantopenabcfilen”)exit()}fwrite(str,,,fp)fseek(fp,L,SEEKSET)fwrite(str,,,fp)fclose(fp)}AfirstBsecondCfirstdD为空(以下程序用于从键盘输入一个以为结束标志的字符串将它存入指定的文件中。请选择正确的编号填空。#include<stdioh>main(){FILE*fpcharch,fnameprintf(“输入文件名:”)scanf(“s”,fname)))==){printf(“不能打开文件n”)exit()}if((ch=getchar()while(){fputc(ch,fp)()}fclose(fp)}Afp=fopen(fname,“r”)Bfp=fopen(fname,“w”)Cfp=fopen(“fname”,“r”)Dfp=fopen(“fname”,“w”)Ach!=Bch<>Cch==D!ch==Agetc(ch)Bgetc()Cch=getchar()Dgetchar(ch)(在C程序中,可把整型数以二进制形式存放到文件中的函数是()。A)fprintf函数B)fread函数C)fwrite函数D)fputc函数(下面说法中错误的是()。A以二进制形式输出文件则文件中的内容与内存中完全一致。B定义:inta=若以ASCII文件的形式存放变量a将在磁盘上占三个字节。CC语言中没有输入输出语句对文件的读写都是用库函数来实现的。DC语言文件中数据以记录为界线便于区分。(下面说法中正确的是()。A函数fprintf()只能向磁盘输出数据不能向显示器屏幕输出数据。B以文本方式打开一个文件输出时将换行符转换为回车换行两个字符。C以文本方式打开一个文件输入时将换行符转换为回车换行两个字符。DC语言中对文件的读写是以字为单位的。(函数fopen()的第一个参数是文件名(可带路径)下面那一个选项作此参数在格式上完全正确()。A“A:folderfile”B“A:folderfile”CA:folderfileD“A:folderfile”(若使用fopen()函数以二进制方式打开一个已经存在的文件并对其进行读写和修改的操作则正确的“文件使用方法”描述是()。A“rb”B“rb”C“wb”D“wb”(若定义:intafp是指向某一已经正确打开了的文件的指针下面的函数使用形式中不正确的是()。Afread(asizeof(int)fp)Bfread(a*sizeof(int)fp)Cfread(asizeof(int)fp)Dfread(a*sizeof(int)fp)(系统的标准输出文件是()。A键盘B硬盘C内存D显示器(有函数调用open(“file”)则表示()。A打开的文件只读。B打开的文件只写。C打开的文件可读可写。D以上说法都不正确。(调用open()函数若未能成功则返回值是()。ABCD某个非零整数(fseek(fdL)中的fd和分别为()。文件指针文件的当前位置。A文件指针文件的开头。BC文件号文件的当前位置。D文件号文件的开头。(下面对read()函数的调用形式中正确的是()。Aread(文件指针缓冲区首地址读入的字节数)Bread(缓冲区首地址读入的变量数文件号)Cread(缓冲区首地址读入的变量数文件指针)Dread(文件号缓冲区首地址读入的字节数)(Write(fdbufcount)函数正确和不正确执行后分别返回()。Acount的值B实际写入的字节数Ccount的值D实际写入的字节数二、填空(C语言中根据数据的组织形式把文件分为和两种。(假设数组a的说明为:inta则函数fwrite(a,,,fp)的功能是。(函数fgetc(stdin)的功能是。(函数fputs(buff,stdout)的功能是。(一般来说操作系统对外部存储介质上的数据的管理是以为单位的。并且,将所有的与主机相连的输入输出设备都看作。(C语言将文件看作是一个或序列根据数据的组织形式,分为ASCII文件和文件。其中ASCII文件又称为文件。(在读写文件以前应该先文件而使用结束以后,必须文件。(使用FILE定义一个文件指针(FILE*fp)再执行语句fp=fopen(文件名文件的使用方式)此时文件指针fp实际上是指向一个类型的变量。(关闭文件的函数fclose()若顺利的执行返回的值为否则返回的值为。若使用结束时不关闭文件可能出现的问题是。(函数fput(实参实参)的作用是实参是实参是指向文件的指针。函数成功执行之后此指针将若执行不成功将返回。函数fgetc()的作用是。(函数feof()的参数是。此函数若返回表示。(函数fread(buffersizecountfp)有四个参数其中buffer是一个指针用于指向size表示count表示fp是指向文件的指针。(Fp是指向某打开的文件的指针调用函数ferror(fp)返回一个非零值表示若调用函数clearerr(fp)后再调用ferror(fp)返回值为。(以下方式中不能打开一个不存在的文件。“r”“a”“a”“w”“rb”“w”(程序开始运行的时候系统将自动打开三个标准文件分别是、和标准出错输出。(C语言中文件位置指针设置函数是文件指针位置检测函数是置文件指针于文件开头位置是。(以下程序的执行结果是。#include<stdioh>main(){inti,nFILE*fpif((fp=fopen(“temp”,“w”))==){printf(“不能建立文件tempn”)exit()}for(i=i<=i)fprintf(fp,“d”,i)for(i=i<i){fseek(fp,i*L,SEEKSET)fscanf(fp,“d”,n)printf(“d”,n)}fclose(fp)}(以下程序将用户从键盘上随机输入的个学生的学号、姓名、数学成绩、计算机成绩及总分写入数据文件scoretxt中假设个学生的学号从~连续。输入时不必按学号顺序进行程序自动按学号顺序将输入的数据写入文件。请在程序中的空白处填入一条语句或一个表达式。#include<stdioh>FILE*fpmain(){structst{intnumbercharnamefloatmathfloatcomputerfloattotal}studentinti,jif(){printf(“fileopenerrorn”)exit()}for(i=i<i){scanf(“d,s,f,f”,studentnumber,,studentmath,studentcomputer)studenttotal=studentmathstudentcomputerj=studentnumberif(fwrite(student,sizeof(student),,fp)!=)printf(“writefileerrorn”)}fclose(fp)}(下面的程序用来统计文件中字符的个数请填空。#include<stdioh>main(){FILE*fplongnum=if((fp=fopen("fnamedat","r"))==){printf("Can"topenfile!n")exit()}while{fgetc(fp)num}printf("num=dn",num)fclose(fp)}(下面程序将使用fgetc()函数实现fgets()的功能成功时返回缓冲区的首地址否则返回。char*myfgets(str,n,fp)charstrintnFILE*fp{intkcharcfor(k=k<()k)if(()(c=fget(fp))!=()c!=r){if(()==)strk=celse()}elsebreakstrk=()return(str)}三、阅读程序,写出运行结果(#include<stdioh>main(){FILE*fpcharch,fnameprintf(“输入一个文件名:”)gets(fname)if((fp=fopen(fname,”w”))==){printf(“不能打开s文件n”,fname)exit()}printf(“输入数据:n”)while((ch=getchar()!=#)fputc(ch,fp)fclose(fp)}问:此题的功能是什么#include“stdioh”main(){FILE*in,*outcharch,infile,oileprintf(“Entertheinfilename:n”)scanf(“s”,infile)printf(“Entertheoilename:n”)scanf(“s”,oile)if((in=fopen(infile,“r”))==){printf(“cannotopeninfilen)exit()}while(!feof(in))fputc(fgetc(in),out)fclose(in)fclose(out)}问:此题的功能是什么#include“stdioh”main(){FILE*fpinti,nfp=fopen(“temp”,“w”)for(i=i<=i)fprintf(fp,“d”,i)for(i=i<i){fseek(fp,i*L,SEEKSET)fscanf(fp,“d”,n)printf(“d”,n)}fclose(fp)}问:()此题的执行结果是什么()若将fp=fopen(“temp”,“w”)换成fp=fopen(“temp”,“w”),执行结果相同吗有如下程序#include“stdioh”main(){FILE*fpif((fp=fopen(“file”,“a”))==){printf(“error!n”)return()}fputc(„a,fp)rewind(fp)putw(,fp)fputs(“EOF”,fp)printf(“nld”,ftell(fp))return()}四、编程题(在考生目录下有Designc程序请完成以下功能:将数组a的每行均除以该行上的主对角元素(第行同除以a第行同除以a然后将a数组写入到考生目录下新建的文件designdat。(在考生目录下有Designc程序请完成以下功能:在至内找出所有的亲密数对并将每对亲密数用语句“fprintf(p,"d,dn",a,b)”写到考生目录下新建文件designdat。说明:若a、b为对亲密数则a的因子和等于b、b的因子和等于a、且a不等于b。如:、是对亲密数、也是对亲密数。(考生目录下有Designc程序请完成以下功能:在正整数中找出个最小的、被、、、除余数分别为、、、的数将该数以格式"d"写到考生目录下新建件designdat。(考生目录下有Designc程序请完成以下功能:在至内找出所有的素数并顺序将每个素数用语句“fprintf(p,"d",i)”写入到考生目录下新建的文件designdat。(说明:素数是自然数以外只能被和其自身整除的数。)(考生目录下有Designc程序请完成以下功能:z=f(x,y)=(*xy)(xy)若x、y取值为区间,的整数找出使z取最小值的x、y并将x、y以格式"d,d"写入到考生目录下新建的文件designdat。第十一部分文件参考答案一、单项选择DCDBCCABACADBBBADBCCDB二、填空(文本文件二进制文件(将a中个两个字节的整数写入到由fp指定的磁盘文件中(将buff指定的字符串在屏幕上显示出来(没有任何显示结果(文件文件(字符字节二进制文本(打开关闭。(结构体。(非零值写入缓冲区中的数据丢失。(把一个字节写到磁盘文件中去一个字符常量或变量向后移动一个字节EOF从指定文件中读出一个字符。(文件指针文件已经结束。读入数据的存放地址每个数据项的字节数将读入多少个size字节的数据项。((前一次文件操作出错。(。(标准输入标准输出。(fseek,ftell,rewind(((fp=fopen(“scoretxt”,“wb”))==studentnamefseek(fp,(long)(j*sizeof(structst)),)(!feof(fp))()n()!feof(fp)()„n()ferror(fp)()return()()三、阅读程序回答问题使用getchar()函数获取用户输入的字符,然后用fputc()函数写入到文件中。程序完成将一个磁盘文件复制到另一个磁盘文件中。()()不同,不会输出四、编程题(main(){floata={{,,},{,,},{,,}}FILE*pinti,jfloatbp=fopen("designdat","w")for(i=i<i){b=aiifor(j=j<j)aij=b}for(i=i<i){for(j=j<j)fprintf(p,"f",aij)fprintf(p,"n")}fclose(p)}#include<stdioh>main(){FILE*pinti,a,b,cp=fopen("designdat","w")printf("程序正在运行请稍等n")for(a=a<=a){b=c=for(i=i<ai)if(ai==)b=ifor(i=i<bi)if(bi==)c=iif((a==c)(a!=b))fprintf(p,"d,dn",a,b)}fclose(p)printf("程序运行结束。n")}#include<stdioh>#include<mathh>voidmain(){FILE*pintip=fopen("designdat","w")i=while((i!=)||(i!=)||(i!=)||(i!=))ifprintf(p,"d",i)fclose(p)}#include<stdioh>#include<mathh>voidmain(){FILE*pinti,jp=fopen("designdat","w")for(i=i<=i){for(j=j<(int)sqrt(i)j)if(ij==)breakif(j>=(int)sqrt(i))fprintf(p,"d",i)}fclose(p)}#include<stdioh>#include<stringh>voidmain(){FILE*pfloatf(floatx,floaty),minintx,y,x,yp=fopen("designdat","w")min=f(,)x=y=for(x=x<=x)for(y=y<=y)if(f(x,y)<min){min=f(x,y)x=xy=y}fprintf(p,"d,d",x,y)fclose(p)}floatf(floatx,floaty){return((*xy)(xy))

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/170

C语言程序设计习题及答案

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利