国二考试C语言程序设计上机100题及答案.doc

上传人:仙人指路1688 文档编号:2385894 上传时间:2023-02-17 格式:DOC 页数:69 大小:214KB
返回 下载 相关 举报
国二考试C语言程序设计上机100题及答案.doc_第1页
第1页 / 共69页
国二考试C语言程序设计上机100题及答案.doc_第2页
第2页 / 共69页
国二考试C语言程序设计上机100题及答案.doc_第3页
第3页 / 共69页
国二考试C语言程序设计上机100题及答案.doc_第4页
第4页 / 共69页
国二考试C语言程序设计上机100题及答案.doc_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《国二考试C语言程序设计上机100题及答案.doc》由会员分享,可在线阅读,更多相关《国二考试C语言程序设计上机100题及答案.doc(69页珍藏版)》请在三一办公上搜索。

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.506583.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所指字符串中

8、a到z26个小写字母的个数,并依次存在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,

9、91,GA012,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);

10、fprintf(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:

11、%ldn, c);题目要求: 编写函数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

12、,10,i,n=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

13、 6 7 8 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、符串中指定字符的个数,并返回此值。如若输入字符串123412132,输入字符为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套编

15、程题#include#includevoid 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与自身)之和。

17、规定n不大于1000.如当n等于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(

18、a);二法:void fun(char *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 aft

19、er deleted:n);puts(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()d

20、ouble x0,x1=0.0;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.000001,执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,并把x1作为函数值返回。100套题第17套编程题#include #defi

21、ne N 8typedef struct char 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

22、*out ; int i,j,n;double 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+) fpri

23、ntf(out,%4.1fn,hi.s); 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(Ente

24、rastring:n);gets(s);printf(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)int

25、i,j,k=0;for(i=0;iM;i+)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;

26、double fun( STREC *a,STREC *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

27、,n;double ave; ave=fun( 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+) fpri

28、ntf(out,%4.1fn,hi.s); 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,*

29、t,*f;printf(Enterastring: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;p

30、rintf(max=%dn,fun(arr);题目要求: 找出并返回整型二维数组的最大值。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(Afterinvo

31、king:n);printf(%sn,s1);二法: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

32、,44,55,55,55,55, i, j; 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#includedoub

33、lefun(doublex9)doublesum,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#include#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(nPleaseent

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号