二级C语言考前押题.pdf
《二级C语言考前押题.pdf》由会员分享,可在线阅读,更多相关《二级C语言考前押题.pdf(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 96套:给定程序中,函数fun的功能是根据形参i 的值返回某个函数的值。当调用正确时,程序输出 xl=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000给定源程序:include double fl(double return x*x;double f2(double return x*y;X)x,double y)/*-Q|J p|*/_ 1 _ fun(int i,double x,double y)if(i=l)/*/return _ 2 _(x);else/*found*/return _ 3 _(x,y);)main()double xl=5z
2、x2=3,r;r=fun(lz xl,x2);r+=fun(2,xl,x2);printf(nnxl=%f,x2=%fz xl*xl+xl*x2=%fnnzxl,x2,r);解题思路:本题是根据给定的公式来计算函数的值。第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double第二处:当 i 等于1 时,则返回f l 函数的值,所以应填:f l。第三处:如果i 不等于1,则返回f2 函数的值,所以应填:f2。参考源程序:c:wexam24990001HLPSYS参考答案、blankl.c清此程序拷贝到考生文件夹中,然后运行这个程序就可以得到正
3、确的结果。*给定程序M0DI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:include/*found*/char fun(char*s,char*t)int sl=Oztl=O;char*ssz*tt;ss=s;tt=t;while(*ss)sl+;/*found*/(*ss)+;)while(*tt)tl+;/*found*/(*tt)+;if(tlsl)return t;else return s;main()char
4、 a80,b80;printf(nEnter a string:);gets(a);printf(nEnter a string again:);gets(b);printf(nThe longer is:nn,%sn/fun(a/b);解题思路:第一处:试题要求返回字符串的首地址,所以应改为:char*fun(char*s,char*t)第二处:取字符串指针SS的下一个位置,所以应改为:SS+;。第三处:取字符串指针tt的下一个位置,所以应改为:*请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1 到第m 个字符,平移到字符串的最后,把 第 m+1到最后的字符移到字符
5、串的前部。例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABCo给定源程序:/include#include#d efine N 80void funl(char*w)/*本函数的功能是将字符串中字符循环左移,个位置*/(int i;chart;t=w0;for(i=0;i(int)strlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用 funl 函数左移字符*/main()char aN=(,ABCDEFGHIJK,;int m;void NONO()
6、;printf(nThe original string:n);puts(a);printf(nnEnter m:“);scanf(“%d”,&m);fun(a,m);printf(nThe string after moving:n);puts(a);printf(nn);NONO();)void NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*/FILE*rf,*wf;char aN;int m,i;rf=fopen(c:testin.dat,/,rn);wf=fopen(c:testout.dat/,w);for(i=0;i 10;i+)
7、fscanf(rf,%d%s,&m,a);fun(a,m);fprintf(wf,%sn,a);)fclose(rf);fclose(wf);参考答案:#include/include#d efine N 80void funl(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/(int i;char t;t=w0;for(i=0;istrlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;void fun(char*w,int m)/*可调用 funl 函数左移字符*/int i;for(i=0;i m;i+)funl(w);main()char aN=,A
8、BCDEFGHIJK;int m;printf(The original string:n);puts(a);printf(nnEnter m:);scanf(%d,&m);fun(a,m);printf(nThe string after moving:n);puts(a);p rintfCW);NONO();NONO()/*请在此函数内打开文件,输入测试数据,调 用 fu n 函数,输出数据,关闭文件。*/FILE*rf,*wf;char aN;int m,i;rf=fopen(“c:testin.dat”J r“);wf=fopen(c:testout.dat,7,w);for(i=0;
9、i 10;i+)fscanf(rf,%d%s,&m,a);fun(a,m);fprintf(wf,%sn“,a);fclose(rf);fclose(wf);)第 14套:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。给定源程序:ftinclude typedef struct int num;char name10;PERSON;/*found*/void fun(PERSON _ 1 _)/*found*I_2_ temp;if(stdO.numstdl.num)temp=
10、stdO;stdO=stdl;if(std0.numstd2.num)temp=stdO;std0=std2;if(stdl.numstd2.num)temp=stdl;stdl=std2;stdl=temp;std2=temp;std2=temp;main()PERSON std=5/Zhanghu,2,WangLiz6;LinMin;int i;/*found*/fun(_3_);printf(nThe result is:n);for(i=0;i3;i+)printf(%d,%sn,stdi.num,stdi.name);)解题思路:本题是要求对结构体数组中的三个元素按num成员升序排列
11、。第一处:由于在函数体fun中,已经使用了 std变量,所以应填:*std。第二处:由于temp是存放交换记录的中间变量,所以应填:PERSON,第三处:函数的调用,所以应填:std。给定程序M0DI1.C中函数fun的功能是:将m(lW m W lO)个字符串连接起来,组成一个新串,放入pt所指存储区中。例 如:把 3 个串:abc,CD,EF连接起来,结 果 是 abcCDEF%ftinclude#include void fun(char str10,int m,char*pt)/*found*/Int k,q,i;for(k=0;k m;k+)q=strlen(str k);for(i
12、=0;iq;i+)/*found*/pti=strk,i;Pt+=q;ptO=0;)main()int m,h;chars1010z p120;printf(HnPlease enter m:H);scanf(%d,&m);gets(sO);printf(nPlease enter%d string:n,m);for(h=0;h m;h+)gets(sh);fun(s,m,p);printf(nThe result is:%sn,p);)解题思路:第一处:保留字int错写成Int。第二处:字符数组的字符串书写格式错误。程序定义了N X N 的二维数组,并在主函数中自动赋值。请编写函数fun(i
13、ntaN),函数的功能是:使数组左下三角元素中的值全部置成0。例如:a 数组中的值为|197|0 9 7|a=|2 38|则返回主程序后a 数组中的值应为|0 0 8|4 5 6|0 0 0|给定源程序:#include#include#d efine N 5void fun(int aN)main()(void NONO();int aNN,iz j;printf(*The array*n);for(i=0;iN;i+)for(j=0;jN;j+)ai01=rand()%10;printf(%4d,aij);printf(n);)fun(a);printf(THE RESULTn);for(
14、i=0;iN;i+)for(j=0;jN;j+)printf(%4dz aij);printf(nn);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int i,j,a;rf=fopenCciWtestWin.daf/r);wf=fopen(“c:testout.dat“Jw);for(i=0;i 5;i+)for(j=0;j 5;j+)fscanf(rf,%d,&aij);fun(a);for(i=0;i 5;i+)for(j=0;j5;j+)fprintf(wfz%4d/aij);fprintf(wf,n)
15、;)fclose(rf);fclose(wf);)参考答案:#include include#define N 5int fun(int aN)(int i,j;for(i=0;i N;i+)for(j=0;j=i;j+)aij=0;main()int aNN,i,j;printf(H*The array*n);for(i=0;iN;i+)for(j=0;jN;j+)ai0=rand()%10;printf(”4d”,aij);printf(un);)fun(a);printf(THE RESULTn);for(i=0;iN;i+)for(j=0;jN;j+)printf(aij);print
16、f(n);)N0N0();N0N0()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;int a;rf=fopenCciWtestWin.datVr);wf=fopen(c:testout.datzw);for(i=0;i 5;i+)for(j=0;j 5;j+)fscanf(rf,%d,&aij);fun(a);for(i=0;i 5;i+)for(j=0;j 5;j+)fprintf(wf,%4d,aij);fprintf(wf,n);)fclose(rf);fclose(wf);)第 06套:给定程序中已建立一个带有头结点的单向链表,在 mai
17、n函数中将多次调用fun函数,每调用次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。给定源程序:include#include#d efine N 8typedef struct list int data;struct list*next;SLIST;void fun(SLIST*p)SLIST*t,*s;t=p-next;s=p;while(t-next!=NULL)S=t;/*found*/t=t-_ 1 _;)/*found*/printf(%d,2);s-next=NULL;/*found*/fr
18、ee(_ 3 _);SLIST*creatlist(int*a)SLIST*h,*p/q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=O;return h;void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nThe list is NULL!n);else printfCAnHead);do printf(-%dH,p-data);p=p-next;while(p!=NULL);printf(n-EndnM);main()SL
19、IST*head;int aN=ll,12,15,18,19,22,25,29;head=creatlist(a);printf(nOutput from head:n);outlist(head);printf(HnOutput from tail:n);while(head-next!=NULL)fun(head);printf(nn);printf(HnOutput from head again:nH);outlist(head);)解题思路:本题是对已经建立的链表,通过调用一次函数就输出链表尾部的数据。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。第一处:由于本题要求输出
20、链表尾部的数据,函数是利用while循环语句找出链表尾部的指针并存入临时变量s 中,那么每循环一次就要判断链表是否已结束位置,如果是,则退出循环,进行输出,由于是通过t 指针变量进行操作的,因此,都要取t 的 next指针重新赋给 t 来实现,所以本处应填next。第二处:输出最后一个结点的数据,所以应填t-data或(*t).data。第三处:输出出最后一个结点数据后,并把此结点删除了,程序要求释放内存,所以应填 t给定程序M0DI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:deba。请改正程序中的错误,使它能计算出正确
21、的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:include/*found*/fun(char a)if(*a)fun(a+l);/*found*/printf(%c*a);)main()char s10=abcd;printf(处理前字符串=%sn处理后字符串=,s);fun(s);printf(n);解题思路:第一处:形参a 应定义为字符串指针。第二处:语句中缺少逗号。*请编写一个函数fu n,它的功能是:比较两个字符串的长度,(不得调用C 语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入 b
22、eijing shanghai (为回车键),函数将返回shanghaio给定源程序:include char*fun(char*s,char*t)main()char a20,b20;void NONO();printf(lnput 1th string:);gets(a);printf(lnput 2th string:);gets(b);printf(H%sn,fun(a,b);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fpz*wf;int i;char a20,b20;fp=fopen(,c:testin.dat
23、,rM);wf=fopen(c:testout.dat,w);for(i=0;i 10;i+)fscanf(fpz%s%s/a,b);fprintf(wfz%snz fun(az b);)fclose(fp);fclose(wf);)参考答案:#include char*fun(char*s,char*t)int i;char*p=s,*q=t;for(i=0;*p&*q;i+)P+;q+;if(*p=0&*q=0)return s;if(*p)return s;else return t;main()char a20,b20;printf(Hlnput 1th string:);gets(a
24、);printfflnput 2th string:);gets(b);printf(%sn,fun(a,b);NONO();NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fpz*wf;inti;char a20,b20;fp=fopenCcrWtestWin.datVr);wf=fopen(c:testout.dat/,w);for(i=0;i 10;i+)fscanf(fp,%s%s/a,b);fprintf(wf,%snHz fun(a,b);fclose(fp);fclose(wf);)第 42套:函数fun的功能是:计算的前n 项之和。若
25、x=2.5,n=15时,函数值为:1.917914。给定源程序:include#include double fun(double x,int n)double 11;int i;/*found*It=-l;1for(i=l;in;i+)/*found*/t*=(_2_)*x/i;/*found*/f+=3.)return f;main()double x,y;x=2.5;y=fun(x,15);printf(nThe result is:n);printf(x=%-12.6f y=%-12.6fn,x,y);)解题思路:第一处:根据公式可知,变量f 的初值为1。第二处:根据公式可知,此处是正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 考前 押题
限制150内