国二考试C语言程序设计_上机100题及答案_第1页
国二考试C语言程序设计_上机100题及答案_第2页
国二考试C语言程序设计_上机100题及答案_第3页
国二考试C语言程序设计_上机100题及答案_第4页
国二考试C语言程序设计_上机100题及答案_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、使用说明: 此100套编程题来源于清华同方光盘电子出版社出版的全国计算机等级考试二级C语言程序设计 上机考试题库,特此声明。 国二考试二级C语言程序设计100套题,各个版本的书大概都差不多。以下是本人精心整理的题库100题(包括答案以及题目要求),希望给悉心复习的你一点小小的启发和帮助啦。因为写得匆忙,如果有不恰当之处,恳请各路编程高手给予批评指正(本人纯属业余的编程爱好者)! 注:答案仅供参考! 作者100套题第1套编程题#include #define M 100void fun (int m,int *a,int *n)int i;*n=0; for(i=1;i=m;i+) if(i%7

2、=0|i%11=0) a(*n)+=i;main( ) int aaM,n,k; fun(50,aa,&n); for(k=0;kn;k+) if(k+1)%20=0) printf(n); else printf(%4d,aak); printf(n) ;题目要求: 将1m之间能被7或11整除的所有整数放入数组a,通过n返回数的个数。如m=50,则程序输出:7 11 14 21 22 28 33 35 42 44 49.100套题第2套编程题#includevoidfun(intm,int*k,intxx)inti,j,t=0;for(i=4;im;i+)for(j=2;ji;j+)if(i

3、%j=0)xxt+=i;break;*k=t;main()intm,n,zz100;printf(nPleaseenteranintegernumberbetween10and100:);scanf(%d,&n);fun(n,&m,zz);printf(nnThereare%dnon-primenumberslessthan%d:,m,n);for(n=0;nm;n+)printf(n%4d,zzn);题目要求:将所有大于1小于整数m的非素数存入xx数组,其个数通过k返回。100套题第3套编程题#include #include #define N 16typedef struct char

4、num10; int s; STREC;STREC fun( STREC *a, char *b )int i; STREC str=0,-1; for(i=0;iN;i+) if(strcmp(ai.num,b)=0) str=ai; return str; main() STREC sN=GA005,85,GA003,76,GA002,69,GA004,85,GA001,91,GA007,72,GA008,64,GA006,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,77,GA017,64,GA018,64,GA016,72; STREC h;

5、 char m10; int i;FILE *out ; printf(The original data:n); for(i=0; iN; i+) if(i%4=0) printf(n); printf(%s %3d ,si.num,si.s); printf(nnEnter the number: );gets(m); h=fun( s,m ); printf(The data : ); printf(n%s %4dn,h.num,h.s); printf(n); out = fopen(out.dat,w) ; h=fun(s,GA013); fprintf(out,%s %4dn,h.

6、num,h.s); fclose(out);题目要求: 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,编写函数fun,功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没找到则给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。100套题第4套编程题#include #include double fun(int m) int i; double s=0.0; for(i=1;i=m;i+) s+=log(i); return sqrt(s);main() printf(%fn, fun(20);题目要求: 计算下列式子的函

7、数值:s=(ln(1)+ln(2)+ln(3)+ln(m)0.5,并返回s的值。可调用log(n)函数求ln(n)。如m值为20,则函数值为6.100套题第5套编程题#include#includevoidfun(char*tt,intpp)inti;for(i=0;i=a&*tt=z)pp*tt-a+;main()charaa1000;intbb26,k;printf(nPleaseenteracharstring:);scanf(%s,aa);fun(aa,bb);for(k=0;k26;k+)printf(%d,bbk);printf(n);题目要求: 统计tt所指字符串中a到z26个小

8、写字母的个数,并依次存在pp数组中。100套题第6套编程题#include #define N 16typedef struct char num10; int s; STREC;void fun( STREC a )int i,j; STREC t; for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(ai.saj.s) t=ai;ai=aj;aj=t;main() STREC sN=GA005,85,GA003,76,GA002,69,GA004,85,GA001,91,GA007,72,GA008,64,GA006,87,GA015,85,GA013,91,GA01

9、2,64,GA014,91,GA011,66,GA017,64,GA018,64,GA016,72; int i;FILE *out ; fun( s ); printf(The data after sorted :n); for(i=0;iN; i+) if( (i)%4=0 )printf(n); printf(%s %4d ,si.num,si.s); printf(n); out = fopen(out.dat,w) ; for(i=0;iN; i+) if( (i)%4=0 & i) fprintf(out, n); fprintf(out, %4d ,si.s); fprintf

10、(out,n); fclose(out) ;题目要求: 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,函数fun功能是:按分数降序排列学生的记录,高分在前,低分在后。100套题第7套编程题#include void fun(int a, int b, long *c)*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;main() int a,b; long c; printf(Input a, b:); scanf(%d %d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c

11、);题目要求: 编写函数fun:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。如当a=45,b=12时,调用该函数后,c=1524。100套题第8套编程题#include #define N 80int fun(int a, int n) int i,j=0; for(i=0;in;i+) if(ai!=ai+1) aj+=ai; return j; void main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n

12、=20; printf(The original data :n); for(i=0;in;i+) printf(%3d,ai); n=fun(a,n); printf(nnThe data after deleted :n); for(i=0;in;i+) printf(%3d,ai); printf(nn);题目要求: 删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10.删除后,数组中的内容是:2 3 4 5 6 7 8

13、9 10.返回9.100套题第9套编程题#include #include #define M 81int fun(char *ss, char c)int i=0; for(;*ss;ss+) if(*ss=c) i+; return i;main() char aM, ch; printf(nPlease enter a string:); gets(a); printf(nPlease enter a char:); ch = getchar(); printf(nThe number of the char is: %dn, fun(a, ch);题目要求: 求ss所指字符串中指定字符

14、的个数,并返回此值。如若输入字符串,输入字符为1,则输出3.100套题第10套编程题#include int fun(char *s)int n=0;for(;*s;s+)if(*s=0)&(*s=9)n+;return n;main() char *s=2def35adh25 3kjsdf 7/kj8655x; printf(%sn,s); printf(%dn,fun(s);题目要求: 统计s所指字符串中的数字字符个数,并作为函数值返回。如s所指字符串中的内容是:2def35adh25 3kjsdf7/kj8655x,则函数返回值为11.100套题第11套编程题#include#inclu

15、devoid fun(int a,int n,int *max,int *d) int i; *max=a0; *d=0; for(i=0;in;i+)if(*maxai) *max=ai;*d=i;void main() int i,x20,max,index,n=10; int y20=4,2,6,8,11,5; for(i=0;in;i+) xi=rand()%50; printf(%4d,xi); printf(n); fun(x,n,&max,&index); printf(Max=%5d,Index=%4dn,max,index);题目要求: 找出一维整型数组元素中最大的值及其所在

16、的下标,并通过形参返回。数组元素中的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。100套题第12套编程题#include int fun(int n)int s=0,i;for(i=2;i=n-1;i+) if(n%i=0)s+=i;return s;void main() int n,sum; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%dn, sum);题目要求: 计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n不大于1000.如当n等于

17、856,则输出763.100套题第13套编程题一法:#include#include#include#defineN81voidfun(char*s)charch;inti,m,n;i=0;m=n=strlen(s)-1;while(i(n+1)/2)ch=si;si=sm;sm=ch;i+;m-;main()charaN;printf(Enterastring:);gets(a);printf(Theoriginalstringis:);puts(a);fun(a);printf(n);printf(Thestringaftermodified:);puts(a);二法:void fun(c

18、har *s)char ch;int i,n;n=strlen(s);for(i=0;in/2;i+)ch=si;si=sn-1-i;sn-1-i=ch;题目要求: 把字符串中的内容逆置。如原字符串是“abc”,逆置后是“cba”。100套题第14套编程题#includevoid fun(char *a) int i,j=0; for(i=0;ai;i+) if(ai!=*) aj+=ai;aj=0;main() char s81; printf(Enter a string:n);gets(s); fun( s ); printf(The string after deleted:n);pu

19、ts(s);题目要求: 删除字符串中所有的*号。不得使用C语言提供的字符串函数。100套题第15套编程题#includevoidfun(char*a)while(*a!=0)a+;a-;while(*a=*)a-;*(a+1)=0;main()chars81;printf(Enterastring:n);gets(s);fun(s);printf(Thestringafterdeleted:n);puts(s);题目要求: 删除字符串尾部的*号。不得使用C语言提供的字符串函数。100套题第16套编程题#include #include double fun()double x0,x1=0.0;

20、dox0=x1;x1=cos(x0);while(fabs(x0-x1)=1e-6);return x1;main() printf(Root =%fn, fun();题目要求: 用简单迭代法求方程cos(x)-x=0的一个实根。迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,将x1的值赋给x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.,执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,并把x1作为函数值返回。100套题第17套编程题#include #define N 8typedef struct c

21、har num10; double s; STREC;double fun( STREC *a, STREC *b, int *n ) int i,j=0; double av=0.0; for(i=0;iN;i+) av=av+ai.s; av=av/N; for(i=0;iN;i+) if(ai.sav) bj+=ai; *n=j; return av;main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, GA01,91,GA07,72,GA08,64,GA06,87; STREC hN,t;FILE *out ; int i,j,n;doubl

22、e ave; ave=fun( s,h,&n ); printf(The %d student data which is lower than %7.3f:n,n,ave); for(i=0;in; i+) printf(%s %4.1fn,hi.num,hi.s); printf(n); out = fopen(out.dat,w) ; fprintf(out, %dn%7.3fn, n, ave); for(i=0;in-1;i+) for(j=i+1;jhj.s) t=hi ;hi=hj; hj=t; for(i=0;in; i+) fprintf(out,%4.1fn,hi.s);

23、fclose(out);题目要求: 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,编写函数fun,功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。100套题第18套编程题#include一法(参考答案):voidfun(char*a,intn)inti=0,k=0;char*p,*t;p=t=a;while(*t=*)k+;t+;if(kn)while(*p)ai=*(p+k-n);i+;p+;ai=0;main()chars81;intn;printf(Enterastring:n);gets(s);pr

24、intf(Entern:);scanf(%d,&n);fun(s,n);printf(Thestringafterdeleted:n);puts(s);二法(自己的,比较简单):voidfun(char*a,intn)inti=0,j=0;for(;ai=*;i+);if(in)while(ai-n)aj+=ai-n; i+; aj=0;题目要求: 删除字符串前导多余的*号。不得使用C语言提供的字符串函数。100套题第19套编程题#include#include#defineM3#defineN20voidfun(charaMN,char*b)inti,j,k=0;for(i=0;iM;i+)

25、for(j=0;aij!=0;j+)bk+=aij;bk=0;voidmain()charwMN=AAAA,BBBBBBB,CC,i;chara100=#;printf(Thestring:n);for(i=0;iM;i+)puts(wi);printf(n);fun(w,a);printf(TheAstring:n);printf(%s,a);printf(nn);题目要求: 将M个字符串进行合并。100套题第20套编程题#include #define N 12typedef struct char num10; double s; STREC;double fun( STREC *a,S

26、TREC *b,int *n ) int i; double av=0.0; *n=0; for(i=0;iN;i+) av=av+ai.s; av=av/N; for(i=0;iN;i+) if(av=ai.s) b*n=ai;*n=*n+1; return av;main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA09,60,GA11,79,GA12,73,GA10,90; STREC hN, t;FILE *out ; int i,j,n;double ave; ave=fun

27、( s,h,&n ); printf(The %d student data which is higher than %7.3f:n,n,ave); for(i=0;in; i+) printf(%s %4.1fn,hi.num,hi.s); printf(n); out = fopen(out.dat,w) ; fprintf(out, %dn%7.3fn, n, ave); for(i=0;in-1;i+) for(j=i+1;jn;j+) if(hi.shj.s) t=hi ;hi=hj; hj=t; for(i=0;in; i+) fprintf(out,%4.1fn,hi.s);

28、fclose(out);题目要求: 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,编写函数fun,功能是:把高于等于平均分的学生数据放入b所指的数组中,高于等于平均分的学生人数通过形参n返回,平均分通过函数值返回。100套题第21套编程题#includevoidfun(char*a,char*h,char*p)inti=0;char*q=a;while(qh)ai=*q;q+;i+;while(qp)if(*q!=*)ai=*q;i+;q+;while(*q)ai=*q;i+;q+;ai=0;main()chars81,*t,*f;printf(Enterastri

29、ng:n);gets(s);t=f=s;while(*t)t+;t-;while(*t=*)t-;while(*f=*)f+;fun(s,f,t);printf(Thestringafterdeleted:n);puts(s);题目要求: 删除串中的*号。100套题第22套编程题#include#defineM4intfun(intaM)inti,j,max=a00;for(i=0;i2;i+)for(j=0;jM;j+)if(maxaij)max=aij;returnmax;main()intarr2M=5,8,3,45,76,-4,12,82;printf(max=%dn,fun(arr)

30、;题目要求: 找出并返回整型二维数组的最大值。100套题第23套编程题一法:#includevoidfun(charp1,charp2)inti,j;for(i=0;p1i!=0;i+);for(j=0;p2j!=0;j+)p1i+=p2j;p1i=0;main()chars180,s240;printf(Enters1ands2:n);scanf(%s%s,s1,s2);printf(s1=%sn,s1);printf(s2=%sn,s2);printf(Invokefun(s1,s2):n);fun(s1,s2);printf(Afterinvoking:n);printf(%sn,s1)

31、;二法:voidfun(charp1,charp2)while(*p1!=0)p1+;if(*p1=0)*p1=*p2;while(*p2!=0)p2+;p1+;*p1=*p2;*p1=0;题目要求: 实现两个字符串的连接。100套题第24套编程题#include void fun (int (*s)10, int *b, int *n,int mm, int nn)int i,j;for(j=0;jnn;j+) for(i=0;imm;i+)b(*n)+=sij; void main() int w1010=33,33,33,33,44,44,44,44,55,55,55,55, i, j;

32、 int a100=0,n=0 ; printf(The matrix:n); for (i=0; i3; i+) for (j=0;j4;j+) printf(%3d,wij); printf(n); fun(w,a,&n,3,4);printf(The A array:n); for(i=0; in; i+) printf(%3d,ai); printf(nn);题目要求: 将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。100套题第25套编程题#include#includedoublefun(doublex9)doubles

33、um,b=0.0;inti;for(i=0;i8;i+)sum=(xi+xi+1)/2;b+=sqrt(sum);returnb;main()doubles,a9=12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0;inti;printf(nTheoriginaldatais:);for(i=0;i9;i+)printf(%6.1f,ai);printf(nn);s=fun(a);printf(s=%fnn,s);题目要求: 函数fun功能:计算并输出给定数组(长度为9)中每两个相邻元素的平均值的平方根之和。100套题第26套编程题#include#inclu

34、de#includevoidfun(intx,intpp,int*n)inti,j=0;for(i=1;i=x;i=i+2)if(x%i=0)ppj+=i;*n=j;voidmain()intx,aa1000,n,i;printf(nPleaseenteranintegernumber:n);scanf(%d,&x);fun(x,aa,&n);for(i=0;in;i+)printf(%d,aai);printf(n);题目要求: 把能整除x且不是偶数的各整数按从小到大的顺序存入pp数组,整数个数通过形参n返回。100套题第27套编程题#include #include #include #i

35、nclude double fun(double x,int n)double s=1.0,t=1.0,a=1.0;int i;for (i=1;i=n;i+)t*=x;a*=i;s+=t/a;return s;void main()printf(%f,fun(0.3,10);题目要求: 计算函数值:S=1+x+x2/2!+x3/3!+xn/n!,如当n=10,x=0.3时,函数值为1.100套题第28套编程题#include#includedouble fun(int n) int i; double s=1.0,x=1.0; for(i=2;i=n;i+) x+=sqrt(i); s+=x

36、; return s;void main() int n; double s; printf(nnInput n: ); scanf(%d,&n); s=fun(n); printf(nns=%fnn,s);题目要求: 计算并输出S=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5)的值。如当n=20,输出S为534.100套题第29套编程题#include #include #include #define N 5void fun (int aN) int i,j; for(i=0;iN;i+) for(j=0;j=i;j+) aij=0;void mai

37、n() int aNN,i,j; int bNN=1,9,7,2,4,2,3,8,1,2,4,5,6,7,5,4,0,6,8,0,2,7,1,6,4; printf(*The array*n); for(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%10; printf(%4d, aij); printf(n); fun(a); printf(The result:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n);题目要求: 下列程序定义了的二维数组,并在主函数中自动赋值。编写函数fun,其功能

38、是:将数组左下半三角元素中的值全部置成0(包括对角线上的元素)。100套题第30套编程题#include #include doublefun(doubleeps)doublesum=1.0,tmp=1.0,i;for(i=1.0;tmp=eps;i+)tmp*=i/(2*i+1);sum+=tmp;return(sum*2);main()double x;printf(Input eps:);scanf(%lf,&x);printf(neps=%lf,PI=%lfn,x,fun(x);题目要求: 根据下式求值(要求精度0.0005,即某项小于0.0005时停止迭代)。.如当输入精度0.000

39、5,则输出3.100套题第31套编程题#include void fun (int *a, int *n)int i;*n=0; for(i=1;i=1000;i+) if(i%7=0|i%11=0)&(i%77!=0) a(*n)+=i; main( ) int aa1000,n,k; fun(aa,&n); for (k=0;kn;k+) if(k+1)%10=0) printf(n); else printf(%5d,aak);题目要求: 编写函数fun,其功能是:求出1-1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

40、100套题第32套编程题#include #define N 8typedef struct char num10; double sN; double ave; STREC;void fun(STREC *a) a-ave=0.0; int i; for(i=0;iave=a-ave+a-si; a-ave/=N;main() STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; int i; fun( &s ); printf(The %ss student data:n, s.num); for(i=0;iN; i+) printf(%4.1fn,s.si); printf(nave=%7.3fn,s.ave);题目要求: 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则它的平均分是78.875.100套题第33套编程题#includechar*fun(

温馨提示

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

评论

0/150

提交评论