四川省计算机二级(C与C )机试题参考答案18~24次)
四川省计算机二级(C与C++)上试试题参考答案四川省普通高等学校计算机应用知识和能力第十八次等级考试二级(C语言)上机考试试卷(第一套)参考答案一、程序调试题(文件名为test1-1.c)(40分)#include
#includeintfun(intm);/*去掉分号(;)*/{intsum,n=0,j,yes;/*改为sum=0*/while((m>=2)&&(n<10)/*改为(n<10))*/{yes=0;/*改为yes=1*/for(j=2;j<=m/2;j++)if(m%j==0){yes=0;break;}if(yes=1)/*改为yes==1*/{sum+=m;n++;m--;}}return;/*改为returnsum*/}main(){intm;clrscr();scanf("%d",m);/*改为&m*/printf("%dn",fun(m));}评分标准:每改对一处得5分,运行结果正确得5分。二、编写程序(程序文件取名为test1-2.c)(60分)评分标准:1.文件打开与关闭正确10分2.文件读写正确10分3.函数及函数调用正确20分4.屏幕上显示结果正确10分5.Test1-2.txt中结果正确10分参考程序:#include#include#defineM10inta[M][M]={0};fm(inta[][M],intm){intj,k;for(j=0;jvoidfun(longs,longt)/*改为long*t*/{longs1=10;*t=s%10;while(s>o);/*改为while(s>0)*/{s=s/100;t=s%10*s1+t;/*改为*t=s%10*s1+*t*/s1=s1*100;/*改为s1=s1*10*/}}voidmain(){longs,t;printf("nPleaseenterintegers:");scanf("%ld",&s);if(s>0){fun(s,&t);printf("Theresultis:%ldn",t);}elseprintf("svalueerror.n");}评分标准:每改对一处得6分,第二处有两个错误,结果正确得10分。第33页共33页n四川省计算机二级(C与C++)上试试题参考答案二、编写程序(程序文件取名为test1-2.c)(60分)评分标准:第33页共33页四川省计算机二级(C与C++)上试试题参考答案1.文件打开、关闭正确10分2.屏幕结果输出正确5分3.文件结果输出正确5分4.数据输入方法正确5分5.排号正确5分6.数据初始化正确5分7.数据处理正确20分8.找出结果正确5分第33页共33页四川省计算机二级(C与C++)上试试题参考答案参考程序:#include#definenmax50voidmain(){inti,k,m,n,num[nmax],*p;FILE*fp;printf("Pleaseenterthen:");scanf("%d",&n);p=num;for(i=0;i#includevoidfun(char*s,char*t1,char*t2,char*w){char*p,*r,*place;strcpy(w,s);place=NULL;第33页共33页n四川省计算机二级(C与C++)上试试题参考答案while(*w){p=w;r=t1;while(r)/*改为*r*/if(*r=*p)/*改为*r==*p*/{r++;p++;}elsecontinue;/*改为break*/if(*r=='0')/*改为' '*/place=w;w++;}if(place!=NULL){r=t2;while(&r)/*改为*r*/*place=*r,place++,r++;}}main(){chars[100],t1[100],t2[100],w[100];printf("nPleaseenterstrings:");scanf("%s",s);printf("nPleaseentersubstringt1:");scanf("%s",t1);printf("nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("nTheresultis:%sn",w);}elseprintf("Error:strlen(t1)!=strlen(t2)n");}评分标准:每改对一处得6分,结果正确得10分。二、编写程序(程序文件取名为test2-2.c)(60分)评分标准:第33页共33页四川省计算机二级(C与C++)上试试题参考答案1.文件打开、关闭正确10分2.屏幕结果输出正确5分3.文件结果输出正确5分4.数据输入方法正确5分5.函数调用和函数参数定义方法正确10分6.下标为奇数位置的判断正确10分7.字母转换正确10分8.命令行参数使用正确5分第33页共33页四川省计算机二级(C与C++)上试试题参考答案参考程序:#includevoidfun(char*st){char*p=st;inti=0;while(*p){if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;第33页共33页n四川省计算机二级(C与C++)上试试题参考答案p++;i++;}}voidmain(intargc,char*argv[]){chartt[51];FILE*wf;if(argc!=2){printf("nToofewparameter!n");exit(0);}wf=fopen(argv[1],"w");printf("Pleaseenterancharachterstringwithin50characters:n");gets(tt);fun(tt);puts(tt);fprintf(wf,"t=%s",tt);fclose(wf);}四川省普通高等学校计算机应用知识和能力第十九次等级考试二级(C和C++语言)上机考试试卷(第三套)参考答案一、程序调试题(文件名为test3-1.c)(40分)#include"stdio.h"#include"string.h"char*insert(char*s1,char*s2){intlen1,len2;charp,q;/*改为*p,*q*/len1=strlen(s1);len2=strlen(s2);q=s1;p=s1+len1;/*改为len1-1*/while(*s1!=' '||*s1!=*s2)/*改为&&*/*s1++;/*改为*s1++*/if(*s1!=' ')for(;p>=s1;p++)/*改为p--*/*(p+len2)=*p;while(*s2)*s1++=*s2++;*(q+len1+len2)=' ';returnp;/*改为returnq*/}voidmain(){charstr1[100],str2[100],*add;printf("Inputastring:n");第33页共33页n四川省计算机二级(C与C++)上试试题参考答案gets(str1);printf("nInputthestringdoyouwanttoinsert:n");gets(str2);add=insert(str1,str2);printf("outputis:%sn",add);}评分标准:每改对一处得5分,结果正确得10分。二、编写程序(程序文件取名为test3-2.c)(60分)评分标准:第33页共33页四川省计算机二级(C与C++)上试试题参考答案1.字符串输入正确5分2.函数及函数调用正确10分3.替换位置定义正确10分4.字符串替换正确15分5.屏幕上显示结果正确5分6.文件打开、关闭正确5分7.文件写入正确5分8.返回结果正确5分第33页共33页四川省计算机二级(C与C++)上试试题参考答案参考程序:#include#includechar*strrep(char*s1,char*s2,intn){char*p,*q;p=s1+n;q=s2;while(*q)*p++=*q++;*p=' ';returns1;}main(){chara[100],b[100],*str;intn,len;FILE*fp;fp=fopen("test3-2.dat","w");printf("Inputstringaandb:n");gets(a);gets(b);len=strlen(a);printf("Inputnumber:");scanf("%d",&n);if((n>=0)&&(n<=len)){str=strrep(a,b,n);printf("Outputis:%sn",str);fprintf(fp,"Outputis:%sn",str);}else{printf("nvalueiserror.n");fprintf(fp,"nvalueiserror.n");}第33页共33页n四川省计算机二级(C与C++)上试试题参考答案fclose(fp);}四川省普通高等学校计算机应用知识和能力第二十次等级考试二级(C和C++语言)上机考试试卷(第一套)参考答案一、程序调试题(文件名为test1-1.c)(40分)#includeintlen_max(char*strp){intmax=0,len=0;while(strp!=' '){while((*strp>='A'&&*strp<='Z')&&(*strp>='a'&&*strp<='z'))/*改为||*/{len++;/*增加一行语句:strp++;*/}if(lenmax*/len=0;strp++;}return;/*改为returnmax*/}voidmain(){charstr[100];intmaxlen;printf("Inputasentence:n");gets(str);maxlen=len_max(&str);/*改为str*/printf("maxlen=%dn",maxlen);}二、编写程序(程序文件取名为test1-2.c)(60分)评分标准:1.文件打开、关闭正确2.屏幕结果输出正确3.文件结果输出正确4.函数定义、形参书写正确5.正确定义实参二维数组,并能正确调用creat函数6.函数中对二维数组的处理正确参考程序:#includevoidcreat(inta[10][10],intn){inti,j;for(i=0;ivoidfun(intm,chars)/*改为*s*/{intk,i=10;while(m!=0){k=m/i;/*改为m%i*/*s=k+"0";/*改为'0'*/s++;m=(m-k)/i;}/*增加一行内容:*s=' ';*/}voidmain(){intx,i;chars[10];scanf("%d",&x);if(x>0){fun(x,s);for(i=0;s;i++)/*改为s[i]*/printf("%c*",s[i]);}elseprintf("xvalueerrorn");}二、编写程序(程序文件取名为test2-2.c)(60分)评分标准:1.文件打开和关闭正确2.串的读入正确3.串的排序正确4.文件位置指针定位正确5.屏幕输出和文件输出正确6.程序结构合理第33页共33页n四川省计算机二级(C与C++)上试试题参考答案参考程序:#include#includemain(){charstr[3][80],string[80];inti,j,k;FILE*fp;fp=fopen("test2-2.txt","r+");for(i=0;i<3;i++)fgets(str[i],80,fp);printf("Thestrings:n");for(i=0;i<3;i++)printf("%s",str[i]);for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++)if(strcmp(str[k],str[j])>0)k=j;if(k!=i){strcpy(string,str[k]);strcpy(str[k],str[i]);strcpy(str[i],string);}}printf("Sortedresult:n");fseek(fp,0,2);for(i=0;i<3;i++){printf("%s",str[i]);fprintf(fp,"%s",str[i]);}fclose(fp);}四川省普通高等学校计算机应用知识和能力第二十次等级考试二级(C与C++语言)上机考试试卷(第三套)参考答案一、程序调试题(文件名为test3-1.c)(40分)#include#defineM2#defineN3#defineP2voidfun(inta[M][N],b[N][P],c[M][P])/*改为intb[N][P],intc[M][P]*/{inti,j,k;for(i=0;i<=P;i++)/*改为iintfun(intn){intf;if(n<1)return0;elseif(n==1)f=1;elsef=fun(n-1)+n;returnf;}main(intargc,char*argv[]){intsum,n;FILE*fp;if(argc!=2){printf("Error!n");exit(0);}fp=fopen(argv[1],"w");printf("Inputn:");scanf("%d",&n);sum=fun(n);printf("1+2+...+%d=%dn",n,sum);fprintf(fp,"1+2+...+%d=%dn",n,sum);fclose(fp);}第33页共33页n四川省计算机二级(C与C++)上试试题参考答案四川省普通高等学校计算机应用知识和能力第二十一次等级考试二级(C与C++语言)上机考试试卷(第一套)参考答案一、程序调试题(文件名为test1-1.c)(40分)#include#includechar*fun(charstr)/*改为*str*/{inti;for(i=0;str;i++)/*改为str[i]*/if(('a'<=str[i])||(str[i]<='z'))/*改为&&*/str[i]+=32;/*改为-=*/return*str;/*改为str*/}main(){charstr[81];printf("nPleaseenterastring:");gets(str[81]);/*改为str*/printf("nTheresultstringis:n%s",fun(str));}评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为test1-2.c)(60分)评分标准:1.被调函数编写正确20分2.文件打开、数据读入正确和定位正确10分3.函数调用正确5分4.屏幕输出和文件输出正确20分5.程序结构合理5分参考程序:#include#includeintprime(inta[],intn){inti,j,k=0,flag=0;for(i=0;i#defineN10/*改为N10*/voidfi(inta[],intm)/*改为int*/{intlow=0,high=N,mid;while(low<=high){mid=(low+high)/2;if(m=a[mid])/*改为m>a[mid]*/low=mid+1;elsereturn(mid);}return(-1);}main(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;for(i=0;i0)printf("m=%d,index=%dn",m,k);/*改为k>=0*/elseprintf("Notbefound!n");}第33页共33页n四川省计算机二级(C与C++)上试试题参考答案评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为test2-2.c)(60分)评分标准:1.被调函数编写正确20分2.文件打开、数据读入正确15分3.函数调用正确5分4.屏幕输出及结果正确15分5.程序结构合理5分参考程序:#include#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){inti,j,min;for(j=0;jvoidmain(){inti,k;/*改为k=0*/chara[80],b[80],*p;p=*a;/*改为p=a*/gets(p);while(!*p)/*改为*p*/{for(i=1;i<3&&*p!=' ';p++,k++,i++)/*改为i<=3*/b[k]=*p;if(i==4){b[k]='';k++;}/*改为''*/}b[k]=' ';puts(*b);/*改为b*/}评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为test4-2.c)(60分)评分标准:1.被调函数编写正确20分2.文件打开、数据写入正确10分3.函数调用正确10分4.屏幕输出正确10分5.m输入正确5分6.程序结构合理5分参考程序:#includeintcreate(inta[],intm){inti,j=0;for(i=1;i<=m;i++)if(i%3==0||i%7==0)a[j++]=i;return(j);}main(){inta[80],m;inti,n;FILE*fp;if((fp=fopen("test3-2.dat","w"))==NULL){printf("Can'topenthefile.n");exit(0);}printf("Inputm:n");scanf("%d",&m);n=creat(a,m);printf("n=%dn",n);第33页共33页n四川省计算机二级(C与C++)上试试题参考答案fprintf("fp,"n=%dn",n);for(i=0;imain(){charstr[81],c;inti,j,n;/*改为n=0*/printf("nEnterastring:");gets(str[81]);/*改为str*/printf("nEnteracharacter:");getchar(c);/*改为c=getchar()*/for(i=j=0;str[i];i++)if(str[i]!=c)str[j]=str[i];/*改为j++*/elsen;/*改为n++*/str[j]=;/*改为str[j]=' '*/printf("nSTR=%s,N=%dn",str,n);getchar();}评分标准:每改对1处得5分,结果正确得10分。二、编写程序(程序文件取名为test4-2.c)(60分)评分标准:1.输入数据正确5分2.被调函数编写正确20分3.文件操作及数据写入正确15分4.函数调用正确5分5.屏幕输出及结果正确10分6.程序结构合理5分参考程序:#include#includevoidfun(char*s,char*t){inti,j=0,n;n=strlen(s);for(i=0;i