全国计算机等级考试二级C历届上机真题_第1页
全国计算机等级考试二级C历届上机真题_第2页
全国计算机等级考试二级C历届上机真题_第3页
全国计算机等级考试二级C历届上机真题_第4页
已阅读5页,还剩349页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机等级考试二级C历届上机真题第1套填充题请补充fun函数,fun函数的功能是求n的阶乘。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:典型算法,递归#include<stdio.h>longfun(intn)(if(_1_)return(n*fun( 2 ));return 3 ;}main0(printf(T0!=%ld\n〃,fun(10));)填充题答案n>l'Knn-11'll'IL填充题+答案ttinclude<stdio.h>longfun(intn)(if(n>1)return(n*fun(n-l));return1;)mainO(printf("10!=%ld\n”,fun(10));}改错题下列给定程序的功能是:读入一个整数k(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3,5,7,Ik请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:语法,典型算法#include<conio.h>^include<stdio.h>/********found********/IsPrime(intn);(inti,m;m=1;/********found********/for(i=2;i<n;i++)if!(n%i)(m=0;break;}return(m);}main()(intj,k;printf(*\npleaseenteranintegernumberbetween2and10000:*);scanf("%d",&k);printf(*\n\nTheprimefactor(s)of%dis(are)k);for(j=2;j<k;j++)if((!(k%j))&&(IsPrime(j)))printf,%4d,j);printf('\n");)改错题答案UsPrime(intn)2if(!(n%i))改错题+答案#include<conio.h>^include<stdio.h>/********found********/IsPrime(intn){inti,m;m=1;/********found********/for(i=2;i<n;i++)if(!(n%i))m=0;break;)return(m);}main()(intj,k;printf(*\npleaseenteranintegernumberbetween2and10000:*);scanf(飞d",&k);printf(*\n\nTheprimefactor(s)of%dis(are)k);for(j=2;j<k;j++)if((!(k%j))&&(IsPrime(j)))printf("%4d,j);printf('\n");}编程题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:返回低于平均分的人数,并将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:数组#include<conio.h>#include<stdio.h>#include<string.h>intfun(intscore[],int叫intbelow[])main()(inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90);FILE*out;n=fun(score,9,below);printf(*XnBelowtheaveragescoreareout二fopen("out.dat*,"w");for(i=0;i<n;i++)printf(*%d*,below[i]);fprintf(out,"%d\n",below[i]);}fclose(out);}编程题答案10203040#include<conio.h>#include<stdio.h>ttinclude<string.h>intfun(intscore[],intm,intbelow[])(inti,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver)(below[k]=score[i];k++;}returnk;}main()(inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};FILE*out;n=fun(score,9,below);printf(*\nBelowtheaveragescoreareout=fopen("out.dat","w");for(i=0;i<n;i++)(printf(*%dbelow[i]);fprintf(out, below[i]);)fclose(out);第2套填充题请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:011235813……注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:典型算法,递归#include<stdio.h>intfun(intn);main()(inti,n=0;scanf&n);for(i=0;i<n;i++)printf(*%d"、fun(i));}intfun(intn)(if(—1—)return0;elseif( 2 )return1;elsereturn 3 ;)填充题答案n=00==n'!nn==ll==nfun(n-l)+fun(n-2)'fun(n-2)+fun(n-1)填充题+答案#include<stdio.h>intfun(intn);main(){inti,n=0;scanf("%d",&n);for(i=0;i<n;i++)printf('%d”,fun(i));intfun(intn)if(n==0)return0;elseif(n—1)return1;elsereturnfun(n-l)+fun(n-2);改错题下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:字符串#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c)(/********found********/intk=1;/********found********/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*P)p++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH”,b[10]="ABcd”,c[80]={''0'};fun(a,b,c);printf(^Thestringa:");puts(a);printf("Thestringb:");puts(b);printf(^Theresult:*);puts(c);}改错题答案lintk=0;lwhile(*p*q)改错题+答案^include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c){/********fotind********/intk=0;/********found********/while(*p *q)(if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;))main(){chara[10]="aBCDeFgH”,b[10]="ABcd”,c[80]={'\0'};fun(a,b,c);printf(^Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:*);puts(c);)编程题请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和II整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:数组,指针#include<conio.h>#include<stdio.h>voidfun(int*a,int*n)main()(intaa[1000],n,k;FILE*out;fun(aa,&n);out=fopen(*out.dat*,"w");for(k=0;k<n;k++)if((k+l)%10==0)(printf("%5d\n",aa[k]);fprintf(out,"%d\n”,aa[k]);}else(printf(*%5d,*,aa[k]);fprintf(out,"%d,",aa[k]);}fclose(out);}编程题答案7,11,14,21,22,28,33,35,42,4449,55,56,63,66,70,84,88,91,9899,105,110,112,119,121,126,132,133,140143,147,161,165,168,175,176,182,187,189196,198,203,209,210,217,220,224,238,242245,252,253,259,264,266,273,275,280,286287,294,297,301,315,319,322,329,330,336341,343,350,352,357,363,364,371,374,378392,396,399,406,407,413,418,420,427,429434,440,441,448,451,455,469,473,476,483484,490,495,497,504,506,511,517,518,525528,532,546,550,553,560,561,567,572,574581,583,588,594,595,602,605,609,623,627630,637,638,644,649,651,658,660,665,671672,679,682,686,700,704,707,714,715,721726,728,735,737,742,748,749,756,759,763777,781,784,791,792,798,803,805,812,814819,825,826,833,836,840,854,858,861,868869,875,880,882,889,891,896,902,903,910913,917,931,935,938,945,946,952,957,959966,968,973,979,980,987,990,994,#include<conio.h>^include<stdio.h>voidfun(int*a,int*n)(inti,j=0;for(i=2;i<1000;i++)if((i%7==0||i%ll==0)&&i%77!=0)a[j++]=i;*n=j;main(){intaa[1000],n,k;FILE*out;fun(aa,&n);out=fopen("out.dat","w");for(k=0;k<n;k++)if((k+l)%10==0)(printf("%5d\n",aa[k]);fprintf(out,"%d\n”,aa[k]);}else{printf(*%5d,aa[k]);fprintf(out,"%d,",aa[k]);)fclose(out);}第3套填充题请补充fun函数(char*s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:字符串ttinclude<string.h>#include<conio.h>ttinclude<stdio,h>#defineN81voidfun(char*s)(inti,n二strlen(s)-l;chart;for(i=0;i<n;i++, 1 )(t=s[i];2—;_3_;}}mainO(chara[N];printf(^Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf(〃\n");printfC'Thestringaftermodified:");puts(a);}填充题答案n-n-=ln=n-ls[i]=s[n](s+i)=*(s+n)s[n]=t(s+n)=t填充题+答案ttinclude<string.h>#include<conio.h>#include<stdio.h>#defineN81voidfun(char*s)chart;for(i=0;i<n;i++,n-){t=s[i];s[i]=s[n];s[n]=t;}}main()(chara[N];printf(*Enterastring:*);gets(a);printf(^Theoriginalstringis:");puts(a);fun(a);printf('\n");printf("Thestringaftermodified:*);puts(a);)改错题下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:字符串#include<stdio.h>#include<conio.h>voidfun(char*s)(inti,j;/********found********/for(i=0,j=0;s[i]!=,\0,;i++)if(s[i]>=’0'&&s[i]<='9')s[j]=s[i];/********fourid********/s[j]="\0";}main()(charitem[80];printf(*XnEnterastringgets(item);printf(*\n\nThestringis:%s\n*,item);fun(item);printf(*\n\nThestringofchangingis:%s\n*,item);改错题答案3s[j++]=s[i];is[j]=;改错题+答案^include<stdio.h>#include<conio.h>voidfun(char*s){inti,j;/********found********/for(i=0,j=0;s[i]!='\0';i++)if(s[j]>= &&s[i]<='9')s[j++]=s[i];/********fourid********/s[j]='\0';}main()(charitem[80];printf(*\nEnterastring:gets(item);printf(*\n\nThestringis:%s\n”,item);fun(item);printf(*\n\nThestringofchangingis:%s\n”,item);编程题请编写函数voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:数组#include<conio.h>#include<stdio.h>voidfun(intx,intpp[],int*n)intx,aa[1000],n,i;FILE*out;printf(#\nPleaseenteranintegernumber:\nzz);scanf(螺d",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf(#%d*,aa[i]);printf(〃\n");fun(730,aa,&n);out-fopen("out・dat","w");for(i=0;i<n;i++)fprintf(out,"%d\n",aa[i]);fclose(out);)编程题答案1573365ttinclude<conio.h>^include<stdio.h>voidfun(intx,intpp[],int*n)(int1=1,j=0,k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){j++;)for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}mainOintx,aa[1000],n,i;FILE*out;printf(*\nPleaseenteranintegernumber:\n");scanf(*%d*,&x);fun(x,aa,&n);for(i=0;i<n;i++)printf(*%d",aa[i]);printf('\n");fun(730,aay&n);out=fopen("out・dat","w");for(i=0;i<n;i++)fprintf(out,"%d\n",aa[i]);fclose(out);第4套填充题请补充fun函数,它的功能是:计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和。例如:在主函数中从键盘给n输入30后,输出为:s=1.226323。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include<stdio.h>doublefun(intn)(inti;doublesum=0.0;for(i=l;-1—;i++)if(i%3==0—2—i%7==0)sum+= 3Ji;returnsum;}main()(intn;doubles;printf(*\nlnputn:");scanf&n);s=fun(n);printf(*\n\ns=%f\n*,s);)填充题答案i<=nn>=iII1.0(double)1填充题+答案#include<stdio.h>doublefun(intn)(inti;doublesum=0.0;for(i=l;i<=n;i++)if(i%3==0||i%7==0)sum+=1.0/i;returnsum;}main()(intn;doubles;printf(*\nlnputn:");scanf&n);s=fun(n);printf('\n\ns=%f\n”,s);【错题下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9o请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:函数#include<conio.h>^include<stdio.h>/********found********/voidfun(char*s,inta,intb)(while(*s)(/********fourid********/if(*s>=,A*&&*s<='Z')a++;/********found********/if(*s>='a‘&&*s<=fz)b++;s++;main()chars[100];intupper=0,lower=0;printf(*\nPleaseastring:");gets(s);fun(s,&upper,&lower);printf(*\nupper=%dlower=%d\n”,upper,lower);改错题答案Ivoidfun(char*s,int*a,int*b)2(*a)++;2(*b)++;改错题+答案#include<conio.h>#include<stdio.h>/********found********/voidfun(char*s,int*a,int*b)(while(*s){/********found********/if(*s>='A‘&&*s<='Z')(*a)++;/********found********/if(*s>=,a*&&*s<=,z)(*b)++;s++;})mainO(chars[100];intupper=0,lower=0;printf(*\nPleaseastring:");gets(s);fun(s,ftupper,&lower);printf(*\nupper=%dlower=%d\n*,upper,lower);)编程题请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符串中‘a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:字符串,数组include<conio.h>include<stdio.h>voidfun(char*tt,intpp[])main()(charaa[1000];intbb[26],k;FILE*out;printf(*\nPleaseenteracharstring:");scanfaa);fun(aa,bb);for(k=0;k<26;k++)printfbb[k]);printf("\n");fun("abosomfriendafarbringsadistantlandnear”,bb);out=fopen(〃out.dat","w");for(k=0;k<26;k++)fprintf(out,"%d\n",bb[k]);fclose(out);)编程题答案720322103001500432000000include<conio.h>include<stdio.h>voidfun(char*tt,intpp[])(inti;for(i=0;i<26;i++)Pp[i]=0;while(*tt)(switch(*tt)(case'a':pp[0]++;break;case'b':pp[l]++;break;case'c':pp[2]++;break;case'd':pp[3]++;break;case'e':pp[4]++;break;case'f':pp[5]++;break;case'g':pp[6]++;break;case'h':pp[7]++;break;case'i':pp[8]++;break;case'j':pp[9]++;break;case'k':pp[10]++;break;case'1':pp[l1]++;break;case'm':pp[12]++;break;case'n':pp[13]++;break;case'o':pp[14]++;break;case'p':pp[15]++;break;case'q':pp[16]++;break;case'r':pp[17]++;break;case's':pp[18]++;break;case't':pp[19]++;break;case'u':pp[20]++;break;case'v':pp[21]++;break;case'w':pp[22]++;break;case'x':pp[23]++;break;case'y':pp[24]++;break;case'z':pp[25]++;break;}tt++;})mainO(charaatlOOO];intbb[26],k;FILE*out;printf(*\nPleaseenteracharstring:*);scanfaa);fun(aa,bb);for(k=0;k<26;k++)printf bb[k]);printf('\n");fun("abosomfriendafarbringsadistantlandnear”,bb);out=fopen(*out.dat","w");for(k=0;k<26;k++)fprintf(out, bb[k]);fclose(out);)第5套填充题请补充fun函数,其功能是:计算并输出给定10个数的方差:其中例如,给定的10个数为15,0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0,输出为s=2.758623。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:数组#include<stdio.h>#include<math.h>doublefun(doublex[10])inti;doubleavg=0.0;doublesum=0.0;doubleabs=0.0;doublesd;for(i=0;i<10;i++)sum+= 1 ;avg=sum/10;for(i=0;i<10;i++) 2 (x[i]-avg)*(x[i]-avg);sd= 3 (abs/10);returnsd;}main()(doubles,x[10]=(15.0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0}:inti;printf(*\nTheoriginaldatais:\n");for(i=0;i<10;i++)printfC%6.ir,x[i]);printf("\n\n");s=fun(x);printf("s=%f\n\n",s);}填充题答案x[i]'*(x+i)abs+=abs=abs+sqrt填充题+答案#include<stdio.h>#include<math.h>doublefun(doublex[10])(inti;doubleavg=0.0;doublesum=0.0;doubleabs=0.0;doublesd;for(i=0;i<10;i++)sum+=x[i];avg二sum/10;for(i=0;i<10;i++)abs+=(x[i]-avg)*(x[i]-avg);sd=sqrt(abs/10);returnsd;}main(){doubles,x[10]={15.0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0};inti;printf(*\nTheoriginaldatais:\n");for(i=0;i<10;i++)printfC%6.If*,x[i]);printf(*\n\n*);s=fun(x);printfC*s=%f\n\n*,s);}改错题假定整数数列中的数不重复,并存放在数组中。下列给定程序中,函数fun的功能是:删除数列中值为x的元素,同时将其他元素前移。N中存放的是数列中元素的个数。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:数组#include<stdio.h>^defineN20fun(int*a,intn,intx)(intp=0,i;a[n]-x;while(x!=a[p])P=p+1;if(p==n){return-1;}else(/********found*******注:下面有两个错误*/for(i=p;i<n;i++)a[i+l]=a[i];returnn-l;})main()intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf(*Theoriginaldata:\n*);for(i=0;i<n;i++)printf("%5d",w[i]);printf(*\nlnputx(todelete):*);scanf("%d",&x);printf("Delete:%d\n',x);n=fun(w,n,x);if(n==-1)(printf(****Notbefound!***\n\n*);)else(printf("Thedataafterdelete:\n");for(i=0;i<n;i++)printf(*%5d*»w[i]);printf('\n\n");))改错题答案2a[i]=a[i+l];改错题+答案^include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]-x;while(x!=a[p])p=p+1;if(p==n)(return-1;}else(/********foiincl********/for(i=p;i<n;i++)a[i]=a[i+l];returnn-l;main()intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf(z,Theoriginaldata:\n*);for(i=0;i<n;i++)printf("%5d",w[i]);printf(*\nlnputx(todelete):*);scanf&x);printf("Delete:%d\n”,x);n=fun(w,n,x);if(n==-1)(printf(****Notbefound!***\n\n*);}else(printf("Thedataafterdelete:\n");for(i=0;i<n;i++)printf(*%5d*,w[i]);printf(*\n\n*);编程题请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能的是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:典型算法,数组^include<conio.h>#include<stdio.h>voidfun(intm,intk,intxx[])main()(intm,n,zz[1000];FILE*out;printf(*XnPleaseentertwointegers:*);scanf(飞d,%d",&m,&n);fun(m,n,zz);for(m=0;m<n;m++)printf(z/%d工zz[m]);printf("\n");fun(28,20,zz);out=fopenCout.dat","w");for(tn=0;m<20;m++)fprintf(out,“刎\n",zz[m]);fclose(out);)编程题答案29313741434753596167717379838997101103107109^include<conio.h>^include<stdio.h>voidfun(intm,intk,intxx[])(intg=0,i,j,flag=l;for(i=m+l;i<m*m;i++)(for(j=2;j<i;j++)(if(i%j!=0)flag=l;elseflag=O;break;if(flag==l&&j>=i)(if(k>=0)(xx[g++]=i;k一;}elsebreak;}main(){intm,n,zz[lOOO];FILE*out;printf(*\nPleaseentertwointegers:*);scanf("%d,%d",&m,&n);fun(m,n,zz);for(m=0;m<n;m++)printf(*%d",zz[m]);printf('\n");fun(28,20,zz);out=fopen("out・dat","w");for(m=0;m<20;m++)fprintf(out,"%d\n”,zz[m]);fclose(out);}第6套填充题下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:结构,典型算法#include<stdio.h>#include<stdlib.h>^defineN10typedefstructss(charnum[10];intorder;}STU;STU*fun(STUa[],intm)(STUb[N],*tt;inti,j,k;tt= 1 (sizeof(STU)*m);for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++)(for(i=j=0;i<N;i++)if(b[i].order 2 b[j].order)j=i;tt[k]=b[j];b[j].order=0;}return 3 ;}outresult(STUa[],FILE*pf)(inti;for(i=0;i<N;i++)fprintf(pf,*No=%sMark=%d\n*,a[i].num,a[i].order);fprintf(pf,"\n\n");}mainO(STUa[N]={{〃A01”,80},{“A02”,79},{"A03",66},{"A04",82},{"A05",87},{"A06",93},{"A07”,78},{“A08”,60},{"A09",85},{“A10",73}};STU*p_order;inti,m;printf("*******TheOriginaldata*******\n");outresult(a,stdout);printf(*\nGivethenumberofthestudentswhohavebetterscore:");scanf(飞d",&m);while(m>10)printf(*\nGinvethenumberofthestudentswhohavebetterscore:*);scanf&m);p_order=fun(a,m);printf("*******THERESULT*******\n");printf("*******Thctopstudents*******\n");for(i=0;i<m;i++)printf(*%s%d\n*»p_order[i].num,p_order[i].order);free(p_order);}填充题答案(STU*)malloc填充题+答案^include<stdio.h>^include<stdlib.h>^defineN10typedefstructss(charnum[10];intorder;}STU;STU*fun(STUa[],intm){STUb[N],*tt;inti,j,k;tt=(STU*)malloc(sizeof(STU)*m);for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++)(for(i=j=0;i<N;i++)if(b[i].order>b[j].order)j=i;tt[k]=b[j];b[j].order=0;)returntt;)outresult(STUa[],FILE*pf)(inti;for(i=0;i<N;i++)fprintf(pf,*No=%sMark二%d\n”,a[i].num,a[i].order);fprintf(pf,"\n\n");main(){STUa[N]={{"AOI”,80},{"A02”,79},{"A03",66},{“A04",82},{"A05",87},{"A06〃,93},{〃A07”,78},{“A08”,60},{〃A09〃,85},{“A10”,73}};STU*p_order;inti,m;printf(,z*******TheOriginaldata*******\n");outresult(a,stdout);printf(*\nGivethenumberofthestudentswhohavebetterscore:");scanf&m);while(m>10){printf(*\nGinvethenumberofthestudentswhohavebetterscore:*);scanf&m);)p_order=fun(a,m);printf("*******THERESULT*******\n");printf("*******Thetopstudents*******"");for(i=0;i<m;i++)printf(z/%s%d\nz,,p_order[i].num,p_order[i].order);free(p_order);}改错题下列给定程序中,函数fun的功能是:根据整形形参m的值,计算如下公式的值。1_12*23*3m*m例如,若m中的值为5,则应输出:0.536389=请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include<conio.h>#include<stdio.h>doublefun(intm)(doubley=1.0;inti;/********found********/for(i=2;i<m;i++)/********found********/y-=l/(i*i);return(y);intn=5;printf(*\nTheresultis%lf\n*,fun(n));}改错题答案lfor(i=2;i<=m;i++)ly-=l.O/(i*i);改错题+答案#include<conio.h>#include<stdio.h>doublefun(intm){doubley=1.0;inti;/********found********/for(i=2;i<=m;i++)/********found********/y-=1.0/(i*i);return(y);)mainO(intn=5;printf(*\nTheresultis fun(n));}编程题请编写一个函数voidfun(chara[],charb[],int),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串World,然后输入3,则调用该函数后的结果为Word。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:字符串#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn)main()(charstrl[LEN],str2[LEN];intn;FILE*out;printf(*Enterthestring:\n*);gets(strl);printf(*Enterthepositionofthestringdeleted:*);scanf(*%d*,&n);fun(strl,str2,n);printf("Thenewstringis:%s\n*,str2);funCHelloWorld!*,str2,9);out=fopen("out・dat","w");fprintf(out,"%s”,str2);fclose(out);j编程题答案HelloWord!include<stdio.h>include<conio.h>defineLEN20voidfun(chara[],charb[],intn)(inti,j=0;for(i=0;i<LEN;i++)if(i!=n)(b[j]=a[i];j++;}b[j]=\0';}main()(charstrl[LEN],str2[LEN];intn;FILE*out;printf(*Enterthestring:\n*);gets(strl);printf(*Enterthepositionofthestringdeleted:*);scanf&n);fun(strl,str2,n);printf(z,Thenewstringis:%s\n^,str2);fun(*HelloWorld!*,str2,9);out=fopen("out・dat","w");fprintf(out,"%s”,str2);fclose(out);}第7套填充题请补充函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只乘一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:1112223445566778991010»删除后,数组中的内容应该是:12345678910。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:数组include<stdio.h>defineN80intfun(inta[],intn)(inti,t,j=0;t=a[0];for(i=l;i<n;i++)if(—1—)else{2—;t=a[i];)a[j++]=t;returnj;}main(){inta[N]={l,1,2,2,2,3,4,4,5,5,6,6,6,7,7,8,9,9,10,10},i,n=20;printf(*Theoriginaldata:\n");for(i=0;i<n;i++)printf("%4d”,a[i]);n=fun(a,n);printf('\n\nThedataafterdeleted:\n");for(i=0;i<n;i++)printf("%4d”,a[i]);printf(*\n");}填充题答案t==a[i]a[i]==ta[j++]=t填充题+答案include<stdio.h>defineN80intfun(inta[],intn)(inti,t,j=0;t=a[0];for(i=l;i<n;i++)if(t==a[i])else{a[j++]=t;t=a[i];)a[j++]=t;returnj;}main()(inta[N]={1,1,2,2,2,3,4,4,5,5,6,6,6,7,7,8,9,9,10,10},i,n=20;printfC*Theoriginaldata:\n");for(i=0;i<n;i++)printf("%4d",a[i]);n=fun(a,n);printf(*\n\nThedataafterdeleted:\n");for(i=0;i<n;i++)printf("%4d",a[i]);printf(*\n");j改错题下列给定程序中函数fun的功能是:用选择法对数组中的n个元素从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:典型算法#include<stdio.h>defineN20voidfun(inta[],intn)(inti,j,t,p;for(j=0;j<n-l;j++)/********fourid********/p=jfor(i=j;i<n;i++)if(a[i]<a[p])(/********found********/P=i;t=a[p];a[p]=a[i];a[i]=t;)}}main()(inta[N]={9,6,8,3,-1},i,m=5;printf("排序前:”);for(i=0;i<m;i++)printf("%d,",a⑴);printf("\n");fun(a,m);printf("排序后:”);for(i=0;i<m;i++)printf("%d,",a[i]);printf(〃\n");i.改错题答案1P=J;lp=j;改错题+答案#include<stdio.h>^defineN20voidfun(inta[],intn)(inti,j,t,p;for(j=0;j<n-l;j++)(/********fourid********/P=j;for(i=j;i<n;i++)if(a[i]<a[p])/********found********/P=j;t=a[p];a[p]=a[i];a[i]=t;main()(inta[N]=(9,6,8,3,-1},i,m=5;printf("排序前:”);for(i=0;i<m;i++)printfC*%d,*,a[i]);printf(〃\n");fun(a,m);printf("排序后:");for(i=0;i<m;i++)printf(*%d,*,a[i]);printf('\n");}编程题请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980o请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:数组,典型算法#include<conio.h>#include<stdio.h>voidfun(int*s,intt,int*k)main()(inta[10]={876,675,896,101,301,401,980,431,451,777},k;FILE*out;fun(a,10,&k);printf(^d,%d\n”,k,a[k]);out=fopen("out・dat","w");fprintf(out,*%d\n%d/z,k,a[k]);fclose(out);}编程题答案6980include<conio.h>include<stdio.h>voidfun(int*s,intt,int*k)(inti,max;max=s[0];for(i=0;i<t;i++)if(s[i]>max)(max=s[i];k=i;main()(inta[10]={876,675,896,101,301,401,980,431,451,777},k;FILE*out;fun(a,10,&k);printf(^d,%d\n”,k,a[k]);out=fopen("out・dat","w");fprintf(out,"%d\n%d”,k,a[k]);fclose(out);}第8套填充题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。例如,输入123540时,最大的数为5。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:数组,语法^include<stdio.h>#include<conio.h>#defineN100main()intnum[N];inti=-1;intmax=0;printf(*\nlnputintegernumber:\n");do(i++;printf(*num[%d]=*»i);scanf("%d", 1 );max= 2 num[i]:max;}while( 3 );printf("max=%d\n”,max);}填充题答案&num[i]'num+imax<num[i]?num[i]>max?num[i]!=0'0!=num[i]填充题+答案#include<stdio.h>#include<conio.h>#defineN100main()(intnum[N];inti=-1;intmax=0;printf(*\nlnputintegernumber:\n");do{i++;printfCnum[%d]=*,i);scanf(*%d*,&num[i]);max=max<num[i]?num[i]:max;}while(num[i]!=0);printf("max二%d\n”,max);}改错题下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为eABCDFGH。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:字符串#include<stdio.h>/********found********/voidfun(char*p);(charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(max<p[i])(/********found********/max=p[i];p=q+i;}i++;}while(q>p)(*q=*(q-l);q-;)p[0]=max;}mainO(charstr[80];printf(*Enterastring:〃);gets(str);printf(*\nTheoriginalstring:");puts(str);fun(str);printf(*\nThestringaftermoving:");puts(str);printf(〃\n\n〃);)改错题答案Ivoidfun(char*p)2q=p+i;改错题+答案#include<stdio.h>/********found********/voidfun(char*p)(charmax,*q;inti=0;max=p[i];while(p[i]!=0)(if(max<p[i])(/********found********/max=p[i];q=p+i;}i++;}while(q>p)(*q=*(q-l);q一;)p[0]=max;}main()(charstr[80];printf(*Enterastring:");gets(str);printf(*\nTheoriginalstring:");puts(str);fun(str);printf('\nThestringaftermoving:");puts(str);printf('\n\n");}编程题编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。c, 1 1 15=1+ + +•••+ 1+21+2+3 1+2+3+…+〃例如:若n的值为II时,函数的值为1.833333。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。关键词:典型算法#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn)main()(intn;floats;FILE*out;printf(*\nPleaseenterN:");scanf&n);s=fun(n);printf("Theresultis: s);s=fun(28);out=fopen("out・dat","w");fprintf(out,"%f”,s);fclose(out);}编程题答案1.931035#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn)(inti;floats=l.0,t=l.0;for(i=2;i<=n;i++)(t=t+i;s=s+l/t;}returns;}main()intn;floats;FILE*out;printf(*\nPleaseenterN:");scanf(飞d",&n);s=fun(n);printf("Theresultis: s);s=fun(28);out=fopen("out・dat","w");fprintf(out,"%f”,s);fclose(out);第9套填充题请补充函数fun,该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asdascasdfgasdasasdmlosd.子字符串为asd,则应输出4。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。关键词:字符串#include<stdio.h>#include<string.h>#include<conio.h>intfun(char*str,char*substr){intn;char*p,*r;—1—;while(*str)(p=str;r=substr;while(*r)if(—2—)(r++;p++;)elsebreak;if(*r== 3 )n++;str++;returnn;main()charstr[81],substr[3];intn;printf(〃输入主字符串:”);gets(str);printfC输入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf(*n=%d\n*,n);}填充题答案n=0*r==*p*p二二*r'\0'0填充题+答案#include<stdio.h>#include<string.h>#include<conio.h>intfun(char*str,char*substr)(intn;char*p,*r;n=0;while(*str)(p=str;r=substr;while(*r)if(*r==*p)(r++;p++;}elsebreak;if(*r==,\0')n++;str++;returnn;main()(charstr[81],substr[3];intn;printf(〃输入主字符串:〃);gets(str);printf(〃输入子字符串:〃);gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d\n”,n);}改错题下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为4(平均分为:75.562500)o请改正程序中的错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。关键词:数组,指针#include<conio.h>^include<stdio.h>#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;/********found********/for(k=0;k<n;k++)t=s[k];ave-t/n;for(i=0;i<n;i++)if(s[i]<ave)count++;/********found********/*aver=&ave;returncount;}floats[30],aver;intm,i;printf(*\nPleaseenterm:");scanf&m);printf(*\nPleaseenter%dmark:\n',m);for(i=0;i<m;i++)scanfC*%f*,s+i);printf(*\nThenumberofstudents:%d\n*,fun(s,m,&aver));printf("Ave=%f\n”,aver);改错题答案2t+=s[k];l*aver=ave;改错题+答案#include<conio.h>#include<stdio.h>#defineN20intfun(float*s,intn,float*aver)(floatave,t=0.0;intcount=0,k,i;/********foiincl********/for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论