四川省第19次计算机2级机试试题
(5页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
9.9 积分
(第一套)(60分钟)一、 程序调试题(文件名testl-l.c) (40分)磁盘上有testl-l.c,程序中函数fun的功能是:从低位开始取出正长整型变量s中奇数位上的数,依次 构成一个新数放在t中。例如,若s中的数为:98765,则t中的数为975。请改正程序中的错误,使程序能 得出正确的结果。注意:不能改动程序的结构,不能添加和删除行,只能修改行。不要改动main函数。源程序如下:# include void fun(long sjong t)t应该定义为指针型{ long si = 10;*t=s%10;while(s>o);后面的分号去掉{ s=s/100;t=s%10*sl+t;应该在 t 加*sl=sl*l00;改为 sl=sl*10}}void main(){ long s,t;printf(”\nPlease enter integer s:M);scanf(”%ld”,&s);if(s>0){ fun(s,&t);printf("The result is :%ld\n",t);)else printf(ns value errorAn1');}二、 编写程序(程序文件名为testl-2.c) (60分)有n个人围成一圈,顺序排号,从第一个人开始报数(从1到5报数),凡报到5的人退出圈子,问最 后留下的是原來第几号的那位。人数不超过50。要求:将结果显示在屏幕上,同时写到文件testl-2.dat中。# include # define nrnax 50void main(){ int i,k,m,n,num[nmax],*p;FILE *fp;printf("Please enter the n:");scanf(H%dn,&n);p二num;for(i=0;i ;i++)*(p+i)=i+l;i=0;k=0;m=0;while(m# include void fun(char *s,char *tl,char *t2,char *w){ char *p,*r,*place;strcpy(w,s);place=NULL;while(*w){ p=w; r=tl;while(r)if(*r=*p){ r++;p++;}else continue;if(*r=O)place=w;w++;}if(place!=NULL){ r=t2;while(&r)*place=*r,place++,r++;main(){ char s[1001,tl[l 001,t2[100],w[ 100];printf("\nPlease enter siring s:"); scanf("%s",s);printf(u\nPlease enter substring tlscanf(H%sM,tl);printf("\nPlease enter substring t2:");scanf(”%s”,t2);if(strlen(t 1 )==strlen(t2)){ fun(s,tl,t2,w);printf("\nThe result is:%s\n'\w);1else printf(,'Error:strlen(tl)!=strlen(t2)\n");}二、编写程序(程序文件名为test2-2.c) (60分)输入一字符串,存入M中并将所有下标为奇数位置上的字母转换为大写字母(若该位置上不是字母,则 不转换)并将结果转出到test2-2.dat文件中保存。例如:如输入abc4Efg,贝ij应输i,l|naBc4EFg,,o要求:用命令行参数传递文件名test2-2.dato参考程序:# in elude void fun(char *st){ char *p=st;int i=0;while(*p){ if((i%2)&&(*p>='a, && *p
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。