1、说明:本题库是针对2008年4月份考试的上机考试题库,本题库共有100套题目(每套题 目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三 道题),但由于考试时是随机抽题,所以即使把原题库告诉大家,你也不能知道到时计算机 会给你抽取哪一套题,所以大家只有把全部题库都理解才能万无一失)二级C语言上机试题汇编第01套:给定程序中,函数f im的功能是:将形参n所指变量中,各位上为偶数的数去 除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回 所指变量。例如,输入一个数:
2、27638496,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e void f iin(unsig ned l ong*n)unsig ned l ong x=0,i;int t;i=l;whil e(*n)t=*n%_1_;/*Cund*/if(t%2!=_2_)x=x+t*i;i=i*10;*n=*n/10;/*Cund*/*n=_3 ma in()unsig ned l ong n=l;whil e(n99999999|n0
3、)print f(Pl ea se input(0n 100000000):);sc a nf(%l d,&n);f un(&n);print f(nThe resul t is:%l d n,n);)解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。第二处:判断是否是奇数,所以应填:0o第三处:最后通形参n来返回新数x,所以应填:x o*给定程序MODI1.C中函数f un的功能是:计算n!。例如,给n输入5,则输出120.000000o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc
4、 l ud e d oubl e f un(int n)d oubl e resul t=1.0;/*Sund*/if n=0 ret urn 1.0;whil e(n 1&n 170)/*Cund*/resul t*=n ret urn resul t;ma in()int n;print f(Input N:);sc a nf(%d,&n);print f(nn%d!=%l f nn,n,f un(n);)解题思路:第一处:条件语句书写格式错误,应改为:if(n=O)。第二处:语句后缺少分号。*请编写一个函数f im,它的功能是:将一个数字字符串转换为一个整数(不得 调用C语言提供的将字符
5、串转换为整数的函数)。例如,若输入字符串”-1234,则 函数把它转换为整数值-1234。函数f im中给出的语句仅供参考。注意:部分源程序存在文件PR0G1.C文件中。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f un的花括号中填 入你编写的若干语句。给定源程序:#inc l ud e#inc l ud e l ong f un(c ha r*p)(/*以下代码仅供参考*/int i,l en,t;/*l en为串长,t为正负标识*/l ong x=0;l en=st rl en(p);if(pO=-)t=-l;l en-;p+;el se t=l;/*以下完成数字字符串转换为
6、一个数字*/ret urn x*t;ma in()/*主函数*/c ha r s6;l ong n;print f(Ent er a st ring:n);g et s(s);n=f iin(s);print f(%l d n,n);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*f p,*wf;int i;c ha r s20;l ong n;f p=f d pen(c:t est in.d a t,r);wf=f open(c:t est out.d a t,w);f d r(i=0;i 10;i+)f sc a nf(f p,%s
7、,s);n=f un(s);f print f(wf,%l d n,n);)f c l ose(Q);f c l ose(wf);解题思路:本题是将一个数字字符串转换为一个整数。参考答案:#inc l ud e#inc l ud e l ong f t m(c ha r*p)(/*以下代码仅供参考*/int i,l en,t;/*l en为串长,t为正负标识*/l ong x=0;l en=st rl en(p);if(pO=-)t=-l;l en-;p+;el se t=l;/*以下完成数字字符串转换为一个数字*/whil e(*p)x=x*10-48+(*p+);ret urn x*t;m
8、a in()/*主函数*/c ha r s6;l ong n;print f(Ent er a st ring:n);g et s(s);n=f iin(s);print f(%l d n,n);NONO();)NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*f p,*wf;int i;c ha r s20;l ong n;f p=f open(c:t est in.d a t,r);wf=f open(c:t est out.d a t,w);f d r(i=0;i 10;i+)f sc a nf(f p,%s,s);n=f un(s);f prin
9、t f(wf,%l d n,n);)f c l ose(Q);f c l ose(wf);注意:由于NONO()这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题 开始均省略NONO()第02套:给定程序中,函数f im的功能是将形参给定的字符串、整数、浮点数写到文本 文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e void f iin(c ha r*s,int a,d ou
10、bl e f)/*Cund*/_1_ f p;c ha r c h;f p=f d pen(f il el.t x t,w);f print f(f p,%s%d%f n,s,a,f);f c l ose(f p);f p=f open(f il el.t x t,r);print f(nThe resul t:nn);c h=f g et c(f p);/*Cund*/whil e(!f e of(_2_)/*Cund*/put c ha r(_3_);c h=f g et c(f p);put c ha r(n);f c l ose(Q);ma in()c ha r a 10-Hel l
11、o!;int b=12345;d oubl e c=98.76;f un(a,b,c);解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE*O第二处:判断文件是否结束,所以应填:f p0第三处:显示读出的字符,所以应填:c h。*给定程序MODH.C中函数f im的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数f im中指定部位的错误,使它能得出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e void f un(c
12、 ha r*s)int i,j;f d r(i=O,j=O;si!=0;i+)if(si=0&si=,9,)/*Cund*/sU=si;/*Cund*/sU-0;)ma in()c ha r it em80;print f(nEnt er a st ring:);g et s(it em);print f(nnThe st ring is:%sn,it em);f iin(it em);print f(nnThe st ring of c ha ng ing is:%sn,it em);)解题思路:第一处:要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的
13、位置,所以应改为:sU+=si;o第二处:置新字符串的结束符,所以应改为:sj=,Ot.*请编写函数f im,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:wwwwssssHHHH则字符串中的内容应是:WSHWSHWSHo注意:部分源程序在文件PROG 1.C中。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f on的花括号中填入 你编写的若干语句。给定源程序:#inc l ud e#d ef ine M 3#d ef ine N 4 void f un(c ha r sN,c ha r*b)(int i,j,n=O;f o
14、r(i=0;iN;i+)/*请填写相应语句完成其功能*/()bn=0;ma in()c ha ra 100,wMNhW,W,W,W,S,S,S,S),H,H;H,H;int i,j;print f(The ma t rix An);f or(i=0;iM;i+)f or(j=O;jN;j+)print f(%3c,wij);print f(n);)f un(w,a);print f(The A st ring:n);put s(a);print f(nn);NONOQ;解题思路:本题是把二维数组中的字符数据按列存放到一个字符串中。1.计算存放到一维数组中的位置。2.取出二维数组中的字符存放到一
15、维数组(已计算出的位置)中。参考答案:void f un(c ha r sN,c ha r*b)(int i,j,n=O;f or(i=0;iN;i+)/*请填写相应语句完成其功能*/(f or(j=O;jM;j+)bn=sji;n=i*M+j+1;)bn=0;第03套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数f un的功能是重写形参f il ena me所 指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源
16、程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e#d ef ine N 5t yped ef st ruc t st ud ent l ong sno;c ha r na me10;f l oa t sc ore3;STU;void f un(c ha r*f il ena me,STU n)FILE*f p;/*f bund*/f p=f open(_l _,rb+);/*Cund*/f see k(_2_,-l L*sizeof(STU),SEEK_END);/*Cund*/f writ e(&n,sizeof(STU),
17、1,_3_);f c l ose(f p);ma in()STU t N=10001,Ma Cha o,91,92,77,10002,Ca oKa i,75,60,88,10003,LiSi,85,70,78,10004,Fa ng Fa ng,90,82,87,10005,Zha ng Sa n,95,80,88;STU n=10006,Zha oSi,55,70,68,ssN;int ij;FILE*f p;f p=f open(st ud ent.d a t,wb);f writ e(t,sizeof(STU),N,f p);f c l ose(Q);f p=f open(st ud e
18、nt.d a t,rb);f rea d(ss,sizeof(STU),N,f p);f c l ose(Q);print f(nThe orig ina l d a t a:nn);f or(j=0;jN;j+)print f(nNo:%l d Na me:%-8s Sc ores:,ssj.sno,ssj.na me);f or(i=0;i3;i+)print f(%6.2f,ssj.sc orei);print f(n);f un(st ud ent.d a t,n);print f(nThe d a t a a f t er mod if ing:nn);f p=f open(st u
19、d ent.d a t,rb);f rea d(ss,sizeof(STU),N,f p);f c l ose(Q);f or(j=0;jN;j+)print f(nNo:%l d Na me:%-8s Sc ores:,ssj.sno,ssj.na me);f or(i=0;i3;i+)print f(%6.2f,ssj.sc orei);print f(n);解题思路:本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。第一处:从指定的文件中读出数据,所以应填:f il ena meo第二处:读取文件中的最后一条记录,所以应填:f po第三处:再把读出的记录,写入文件中指定的位置上
20、,所以应填:*给定程序MODIl.C中的函数Crea t l ink的功能是创建带头结点的单向链表,并 为各结点数据域赋0到m-1的值。请改正函数Crea t l ink中指定部位的错误,使它能得出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e#inc l ud e t yped ef st ruc t a a int d a t a;st ruc t a a*nex t;NODE;NODE*Crea t l ink(int n,int m)NODE*h=NULL,*p,*s;int i;/*Cund*/p=(NODE)ma
21、l l oc(sizeof(NODE);h=p;p-nex t=NULL;f d r(i=l;id a t a=ra nd()%m;s-nex t=p-nex t;p-nex t=s;p=p-nex t;/*Cund*/ret urn p;out l ink(NODE*h)NODE*p;p=h-nex t;print f(nnTHE LIST:nn HEAD);whil e(p)print f(,-%d,p-d a t a);p=p-nex t;)print f(n);)ma in()NODE*hea d;hea d=Crea t l ink(8,22);out l ink(hea d);)解
22、题思路:第一处:指向刚分配的结构指针,所以应改为:p=(NODE*)ma l l oc(sizeof(NODE);第二处:在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用P,是因为p的位置已经发生了变化,所以应改为返回鼠*请编写函数f im,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件PROG1.C中。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f un的花括号中填入你编写的若干语句。给定源程序:#inc
23、l ud e#inc l ud e#d ef ine N 80int f un(c ha r*s)ma in()c ha r l ineN;int num=O;print f(Ent er a st ring:n);g et s(l ine);num=f un(l ine);print f(The number of word is:%d nn,num);NONO();)解题思路:本题是统计字符串中的单词数。1.利用whil e循环语句和指针变量,当字符为空格时,则单词数k加1。2.循环结束返回ko参考答案:int f iin(c ha r*s)(int k=1;whil e(*s)if(*s
24、=)k+;s+;ret urn k;第04套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数f un的功能是从形参f il ena me所指 的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的 学生数据输出到f il ena me所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e#d ef ine N 5t yped ef st ru
25、c t st ud ent l ong sno;c ha r na me 10;f l oa t sc ore3;STU;void f un(c ha r*f il ena me)FILE*f p;int i,j;STU sN,t;/*Sund*/f p=f d pen(f il ena me,_1_);f rea d(s,sizeof(STU),N,m);f c l ose(f p);f or(i=0;iN-l;i+)f or(j=i+l;jN;j4-+)/*Sund*/if(si.sno _2_ sj.sno)t=si;si=sj;sj=t;f p=f open(f il ena me,w
26、b);/*Sund*/_3_(s,sizeof(STU),N,f p);/*二进制输出*/f c l ose(Q);ma in()STU t N=10005,Zha ng Sa n,95,80,88,10003,LiSi,85,70,78,10002,Ca oKa i,75,60,88,10004,Fa ng Fa ng,90,82,87,10001,Ma Cha o,91,92,77,ssN;int i,j;FILE*f p;f p=f open(st ud ent.d a t,wb);f writ e(t,sizeof(STU),5,f p);f c l ose(Q);print f(nn
27、The orig ina l d a t a:nn);f or(j=0;jN;j+)print f(nNo:%l d Na me:%-8s Sc ores:,t j.sno,t j.na me);f or(i=0;i3;i+)print f(%6.2f,t j.sc orei);print f(n);f un(st ud ent.d a t);print f(nnThe d a t a a f t er sort ing:nn);f p=f d pen(st ud ent.d a t,rb);f rea d(ss,sizeof(STU),5,f p);f c l ose(f p);f orG=
28、0;jN;j+)print f(nNo:%l d Na me:%-8s Sc ores:,ssj.sno,ssj.na me);f or(i=0;i。第三处:把已排序的结构数据,重新写入文件,所以应填:f writ eo*给定程序MODIl.C中函数f im的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数f im中指定部位的错误,使它能得出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e#inc l ud e void f un(c ha r s,int n)(c ha
29、 r a 80,*p;int i;/*Cund*/S=p;f or(i=0;in;i+)a i-*;d oa i=*p;i+;)/*f bund*/whil e(*p+)a i=0;st rc py(s,a);)ma in()int n;c ha r s80;print f(nEnt er a st ring:);g et s(s);print f(nThe st ring%sn,s);print f(nEnt er n(number of*):);sc a nf(%d,&n);f un(s,n);print f(nThe st ring a f t er insert:%s n,s);)解题
30、思路:第一处:指针p应指向s,所以应改为:p=s;o第二处:死循环,当d o whil e循环执行一次,临时变量P应该指向字符串的下一位置,所以 应改为:whil e(*p+);o*请编写函数f im,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的a g e数组中;要求函数把0至9岁年龄段的人数放在d 0 中,把10至19岁年龄段的人数放在d l 中,把20至29岁年龄段的人数放在d中,其余依此类推,把100岁(含100)以上年龄的人数都放在d 10中。结果在主函数 中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数ma in和其它函数中的任何内容,
31、仅在函数f im的花括号中填入 你编写的若干语句。给定源程序:#inc l ud e#d ef ine N 50#d ef ine M 11void f un(int*a,int*b)d oubl e md()st a t ic t=29,c=217,m=1024,r=0;r=(r*t+c)%m;ret um(d oubl e)r/m);ma in()int a g eN,i,d M;f d r(i=O;iN;i+)a g ei=(int)(115*md();print f(The orig ina l d a t a:n);f d r(i=0;iN;i+)print f(i+l)%10=0?
32、%4d n:%4d,a g ei);print f(nn);f un(a g e,d);f d r(i=O;i 10;i+)print f(%4d%4d:%4d n,i*10,i*10+9,d i);print f(Over 100:%4d n,d 10);NONO(d);)解题思路:本题是统计各年龄段的人数。1.初始化各年龄段人数为0。2.使用f d r循环以及求出各年龄的十位数字作为存放人数的地址,如果大于值大于10,则 存入d 10中(大于110岁的人)。参考答案:void f un(int*a,int*b)(int i,j;f br(i=0;i M;i+)bi=0;f br(i=0;i
33、 10)bM-1+;el se;d oubl e md()st a t ic 片29,c=217,m=1024,0;r=(r*t+c)%m;ret um(d oubl e)r/m);第05套:给定程序中,函数firn的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数a t oi和a t of将 字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud
34、e#inc l ud e void f un(c ha r*s,int a,d oubl e f)/*Cund*/_1f p;c ha r st r100,st rl 100,st r2100;int a l;d oubl e f l;f p=f open(f il el.t x t,w);f print f(f p,%s%d%f n,s,a,f);/*Cund*/2f p=f open(f il el.t x t,r);/*Simd*/f sc a nf(3_,%s%s%s,st r,st rl,st r2);f c l ose(Q);a l=a t oi(st rl);f l=a t of
35、(st r2);print f(nThe resul t:nn%s%d%f n,st r,a l,f l);ma in()c ha r a 10-Hel l o!;int b=12345;d oubl e c=98.76;f un(a,b,c);)解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮 点数显示在屏幕上。第一处:定义文本文件类型变量,所以应填:FILE*O第二处:关闭刚写入的文件,所以应填:f c l ose(f p)o第三处:从文件中读出数据,所以应填:f po*给定程序MODILC中函数f im的功能是:对N名学生的学习成绩,按从高到低的顺
36、序找出前m(m 10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数f im中指定部位的错误,使它能得出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e#inc l ud e#inc l ud e#d ef ine N 10t yped ef st ruc t ss c ha r num10;int s;STU;STU*f on(STU a,int m)STU bN,*t;int i,j,k;/*Cund*/片(STU*)c a l l oc(sizeof(STU),m)f
37、 or(i=0;iN;i+)bi=a i;f d r(k=0;km;k+)f br(i=j=O;i b|j.s)j=i;t(k尸b(j);bj.s=O;)ret urn t;)out resul t(STU a,FILE*pf)int i;f d r(i=O;i10)print f(nGive t he number of t he st ud ent s who ha ve bet t er sc ore:);sc a nf(%d,&m);)pOrd er=f un(a,m);print s*THE RESULT*n);print f(The t op An);f d r(i=O;im;i+
38、)print f(%s%d n,pOrd eri.num,pOrd eri.s);f ree(pOrd er);)解题思路:第一处:语句最后缺少分号。第二处:应该使用方括号,而不是圆括号。像此类,使用编译,即可发现。*请编写函数f im,函数的功能是:删去一维数组中所有相同的数,使之只剩一 个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2223 445 666677899 10 10 10。删除后,数组中的内容应该是:2345 6789 10o注意:部分源程序在文件PROG1.C中。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f i
39、m的花括号中填入 你编写的若干语句。给定源程序:#inc l ud e#d ef ine N 80int f un(int a,int n)ma in()int a N=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20;print f(The orig ina l d a t a:n);f d r(i=O;in;i+)print f(%3d,a i);n=f un(a,n);print f(nnThe d a t a a f t er d el et ed:n);f or(i=0;in;i+)print f(%3d,a i);print f(
40、nn);NONO();)解题思路:本题是删除已排序过数组中的相同数。1.取出数组中的第1个数存放在临时变量k中,再利用f or循环来依次判断所有的数。2.如果取出的数和k相比,如果不相同,则仍存放在原数组中,其中存放的位置由j来控制,接着把这个数重新存入k。如果相同,则取下一数。参考答案:int f un(int a,int n)int i,j=1,k=a 0;f d r(i=1;i n;i+)if(k!=a i)a jH=a i;k=a i;a U=O;ret urn j;第06套:给定程序中,函数f im的功能是根据形参i的值返回某个函数的值。当调用正 确时,程序输出:x l=5.0000
41、00,x 2=3.000000,x l*x l+x l*x 2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e d oubl e f l(d oubl e x)ret urn x*x;d oubl e f 2(d oubl e x,d oubl e y)ret urn x*y;/*Cund*/_1_ f un(int i,d oubl e x,d oubl e y)if(i=D/*Cund*/ret urn _2_(x);el
42、se/*Simd*/ret urn _3_(x,y);ma in()d oubl e x l=5,x 2=3,r;r=f iin(l,x l,x 2);r+=f on(2,x l,x 2);print f(nx l=%f;x 2=%x l*x l+x l*x 2=%f nn,x l,x 2,r);解题思路:本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度d oubl e类型进行计算,所以函数的返回值类型也为d oubl e,所 以应填:d oubl e o第二处:当i等于1时,则返回f l函数的值,所以应填:f l o第三处:如果i不等于1,则返回f 2函数的值,所以应填:f 2o
43、*给定程序MODILC中函数f im的功能是:比较两个字符串,将长的那个字符串 的首地址作为函数值返回。请改正函数f im中指定部位的错误,使它能得出正确的结果。注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inc l ud e c ha r f iin(c ha r*s,c ha r*t)int sl=O,t l=O;c ha r*ss,*t t;ss=s;t t=t;whil e(*ss)sl+;/*Cund*/(*ss)+;)whil e(*t t)t l+;(*t t)+;)if(t l sl)ret urn t;el se ret urn s;)m
44、a in()c ha r a 80,b80,*p,*q;int i;print f(nEnt er a st ring:);g et s(a);print f(nEnt er a st ring a g a in:);g et s(b);print f(nThe l ong er is:nn%sn,f un(a,b);解题思路:第一处:试题要求返回字符串的首地址,所以应改为:c ha r*f un(c ha r*s,c ha r*t)第二处:取字符串指针ss的下一个位置,所以应改为:SS+;。第三处:取字符串指针t t的下一个位置,所以应改为:t t+;。*请编写函数f im,函数的功能是:移
45、动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串 print f(nnEnt erm:);sc a nf(%d,&m);print f(Theorig ina lst ring:n);put s(a);intm;c ha ra N=ABCDEFGHIJK;ma in()(voidf un(c ha r*w,intm)/*可调用f iinl函数左移字符*/)wst rl en(w)-l=t;wi=wi+l;f or(i=O;ist rl en(w)-1
46、;i+)t=w0;inti;c ha rt;(voidf unl(c ha r*w)/*本函数的功能是将字符串中字符循环左移一个位置*/#d ef ineN80#inc l ud e#inc l ud e给定源程序:你编写的若干语句。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f im的花括号中填入注意:部分源程序在文件PR0G1.C中。中的内容应该是:DEFGHIJKABCo/*宏为世纪教育 */f un(a,m);print f(nThe st ring a f t er moving:n);put s(a);print f(nn);NONO();)给定源程序:不得增行或删行,
47、也不得更改程序的结构!注意:源程序存放在考生文件夹下的BLANK1.C中。果。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结数f un的功能是输出这位学生的信息。程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函第07套:f d r(i=0;im;i+)f unl(w);int i;(voidf un(c ha r*w,intm)/*可调用f iml函数左移字符*/)wst rl en(w)-l=t;wi=wi+l;f or(i=O;ist rl en(w)-1;i+)t=w0;inti;c ha rt;(voidf unl(c ha r*w)/*本函数的功
48、能是将字符串中字符循环左移一个位置*/*宏为世纪教育 */参考答案:2.利用循环f d r语句来操作多少个字符(m)需要循环左移。置的字符串。1.由于函数f iml是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位本题是考察字符串的操作。解题思路:给定源程序:注意:不要改动ma in函数,不得增行或删行,也不得更改程序的结构!请改正程序中的错误,使它能得出正确的结果。把最大数和a 0中的数对调、次最大数和a l 中的数对调。给定程序MODIl.C中函数f un的功能是:求出数组中最大数和次最大数,并*第三处:函数的调用,所以应填:St d o第二处:利用循环分别输出学生的成绩数据
49、,所以应填:t t.sc orei0第一处:t t变量在函数体f im已经使用,所以应填:t t o本题是利用结构体变量存储了一名学生的信息。解题思路:show(_3_);/*Cund*/print f(nAst ud entd a t a:n);STUst d=l,Zha ng hua;M,1961,10,8,76.5,78.0,82.0;ma in()print f(n);print f(%5.1f,_2_);/*Sund*/f or(i=0;i3;i+)t t.birt hd a y.yea r,t t.birt hd a y.mont h,t t.birt hd a y.d a y);
50、print f(n%d%s%c%d-%d-%d,t t.num,t t.na me,t t.sex,int i;voidshow(STU_1_)/*Sund*/STU;f l oa tsc ore3;st ruc tintyea r,mont h,d a y;birt hd a y;c ha rsex;c ha rna me9;intnum;t yped efst ruc t#inc l ud e/*宏为世纪教育 */unsig nedf un(unsig nedw)#inc l ud e给定源程序:你编写的若干语句。请勿改动主函数ma in和其它函数中的任何内容,仅在函数f im的花括号中填