《历年C语言上机真题.pdf》由会员分享,可在线阅读,更多相关《历年C语言上机真题.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、改错题1、下列程序功能是,从键盘输入一个字符串,统计其中大写字母个数m和小写字母个数n,并且输出m,n中的较大者。#i ncl ude stdi o.h#i ncl ude str i ng.h m a i n()ch a r s 80;i nt i,k,m=0,n=0;g ets(s);i=1;/*$ERR0R1$*/k=strl en(s);w h i l e(i=,A1&si =,a*&si m)/*$ERR0R3$*/pr i ntf(m a x=%d n”,m);el se pri ntf(m a x=%d n”,n);)2、以下程序的功能是求两个整数的最大公约数。m a i n
2、()i nt m,n,r,t;pr i ntf(z,Input tw o num b er,pl ea se!nz,);sca nf(%d,%d,&m,&n);i f(m n)/*$ERR0R1$*/t=m;m=n;n=t;r=m%n;w h i l e(r=0)/*$ERR0R2$*/m=n;n=r;r=m%n;)pri ntf(g cd=%D n”,n);/*$ERR0R3$*/3、以下程序的功能:输出数组中的最大元素及其下标值。m a i n()i nt a 10 =(0,-3,9,2,5,4,8,7,6,1);/*$ERR0R1$*/i nt tf m a x,i;m a x=a 0;
3、t=1;/*$ERR0R2$*/i=1;w h i l e(i=10)/*$ERR0R3$*/i f(m a x a i )m a x=a i ;t=i;i+;pri ntf(MAX=%d,ADDRESS=%d,m a x,t);)4、以下程序通过指针操作,输入整数给数组并对数组进行逆序输出。#i ncl ude m a i n()ti nt a 10,*p;for(p=a;pa;p)/*$ERR0R2$*/p r in t f p);/*$ERR0R3$*/5、随机输入10个数,选出其中的最大数。m a i n()i nt i,m a x,a 10;pri ntf(,zi nput 10 n
4、um b er:nz,);i=0;w h i l e(i=10)/*$ERR0R1$*/s c an f a i);/*$ERR0R2$*/i+;)m a x=a 0;for(i=1;i a 0)/*$ERR0R3$*/m a x=a i :pr i ntf(m a x num=%d n”,m a x);16、输出以下图形(*之间没有空格,每行第一个*前也没有空格)*m a i n()ti nt i,j;i=1;/*$ERR0R1$*/w h i Ie(i 4)j=0;w h i l e(j 0)(j=1;w h i l e(j=i)pri ntf(*);j+;pri ntf(n);i+;/*
5、$ERR0R3$*/117、利用循环语句求:1/3-2/5+3/7-4/9+n/(2n-1)d的值。(本题求前50项之和)m a i n()i nt i=1;fl oa t s;s=0;w h i l e(i 50)/*$ERR0R1$*/i f(i%2=0)/*$ERR0R2$*/2s=s+1.0*i/(2*i+1);e I ses=s-1.0*i/(2*i+1);i+;)pri ntf(S=%d”,s);/*$ERR0R3$*/)8、输出以下图形(输出数字之间无空格,每行第一个数字前也没有空格)123345456756789m a i nO i nt i,j;i=1;w h i l e(i
6、 5)/*$ERROR1$*/(for(j=i;j 2*i;j+)pri ntf(,z%fz,,j);/*$ERROR2$*/pri ntf(n);i ;/*$ERROR3$*/9、利用循环语句求:(本题求前20项的和)S=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-.+1/(19*20*21)-1/(20*21*22)m a i n()l i nt i;fI oa t s;/*$ERR0R1$*/i=1;w h i l e(i 20)/*$ERR0R2$*/i f(i%2=0)/*$ERR0R3$*/s=s+1.0/(i*(i+1)*(i+2);el ses=s-1.0/(i
7、*(i+1)*(i+2);i+;)pri ntf(%f n”,s);)10、以下程序的功能是:定义m ea n函数求num 个数的平均值,在主函数中调用m ea n函数求15个数的平均值,并输出结果。#i ncIudefl oa t m ea n(i nt x,i nt num)/*$ERR0R1$*/i nt i;fl oa t a vg;for(a vg=0,i=0;i num;i+)a vg+=x i ;a vg%=num;/*$ERR0R2$*/return(a vg);1m a i n()i nt i,a 15;fl oa t a vg;for(i=0;i 15;i+)3a i =i
8、+3;a vg=m ea n(a 0 ,15);/*$ERR0R3$*/pr i ntf(a vera g e:%6.2f n”,a vg);)11、以下程序是定义长度为81的数组用于存放字符串,判断输入的字符串是否是“回文”(即顺读和倒读都一样,例如:ABCBA,首部和尾部的空格不参与比较。)#i ncIude#i ncl udem a i nO ch a r s81;/*$ERR0R1$*/i nt i,j,n;sca nf(%s”,s);n=str l en(s);i=0;j=n-1;/*$ERR0R2$*/w h i l e(sU=)i+;w h i l e(sj )j ;w h i
9、l e(i j&si =sj )/*$ERR0R3$*/i+;j ;i f(i j)pri ntf(No n);eIse pri ntf(Yes n);112、下面程序的功能是从主函数中输入一个正整数n,并通过调用fa c函数,求 得 n 的阶乘,在主函数中输出n!的值,请修改程序中的错误。#i ncIudeIong fa c(i nt n)i nt i;l ong s;s=1;/*$ERR0R1$*/i=1;w h i l e(i=n)/*$ERR0R2$*/s=s*i;i+;return s;1m a i n()i nt n;pri ntf(Enter n:);sca nf(%d,&n);
10、/*$ERR0R3$*/pr i ntf(s=%Id n”,fa c(n);13、将数组中的数按从大到小排序后输出(输出时每个数占5 歹 Dm a i n()i nt a 10=23,90,-45,60,100,62,78,-89,-50,0);i nt i,j,tem p;for(i=0;i 9;i+)(for(j=0;j 9-i;j+)i f(a j a j+1)/*$ERR0R1$*/tem p=a j ;a j =a j+1;a j+1=tem p;/*$ERR0R2$*/)4for(i=0;i=9;i+)pri ntf(%5d”,a i );/*$ERR0R3$*/114、不用str
11、ca t函数,将键盘输入的两个字符串连接起来形成一个新串(将第二个串连接到第一个串的后面)#i ncIudem a i n()ch a r s160,s230;i nt i=0,j=0;pri ntf(Enter tw o str i ng :n);sca nf(%s%s”,s1,s2);/*$ERR0R1$*/for(i=0;s1i !=0 ;i+);/*$ERR0R2$*/w h i l e(s2j =0)/*$ERR0R3$*/Is1 i =s2j ;i+;j+;)s1i =0;pri ntf(w n New stri ng:%s n”,s1);115、以下程序判断输入的字符串是否是“回
12、文”(即顺读和倒读都一样。例如:ABCBA,字符串首部和尾部的空格不参与比较)。#i ncl ude#i ncl udem a i n()ch a r s81;i nt i,j,n;g ets(s);n=strIen(s);i=0;/*$ERR0R1$*/j=n-1;w h i l e(si =)i+;w h i l e(sj )j ;w h i l e(i j&si =sj )/*$ERR0R2$*/i+;j ;)i f(Kj)/*$ERR0R3$*/pri ntf(No n);e I sepri ntf(Yes n);)二、填空题1、下列程序输出200 300之间的全部素数的和,请填空。#
13、i ncl ude m a i nOl i nt i,j,f,s;s=0;/*$BLANK1$*/for(i=201;i 300;i+=2)g ;for(j=2;j=l-1)s+=i;/*$BLANK3$*/1pr i ntf(s=%d n”,s);12、从键盘输入10个数存入数组a中,统计数组下标是奇数且数组元素值为偶数的元素个数。#i ncl ude m a i n()l i nt a 10,i,s;s=0;/*$BLANK1$*/for(i=0;K10;i+)/*$BLANK2$*/sca nf(%d”,&a i );i f(i%2=1&a i%2=0)/*$BLANK3$*/s+;)p
14、r i ntf(%d n”,s);)3、完善程序,使 5*5数组的主对角线元素为1,其它元素为0。m a i n()(i nt j,k,a 5 ;for(j=0;j 5;j+)for(k=0;k 5;k+)i f(k=j )/*$BLANK1$*/a j k =1;/*$BLANK2$*/e I sea j k =O;/*$BLANK3$*/)for(j=0;j 5;j+)for(k=0;k=O&ch=9)/*$BLANK2$*/s+;ch=g etch a r();/*$BLANK3$*/)pri ntf(%d n”,s);15、以下程序中,主函数中调用col urm i i n函数,实现在
15、N 行 M 列的二维数组中找出每一列上的最小值。#defi ne N 3#def i ne M 4voi d col um m i n(i nt x N M)i nt i,j,p;for(j=O;j M;j+)p=0;for(i=1;i x i j )p=i;/*$BLANK1$*/pri ntf(T h e m i n i n col um%d i s%d nz,,j,x p j ):/*$BLANK2$*/1m a i nO i nt x N M =1,5,7,4,2,6,4,3,8,2,3.11;co Ium m i n(x);/*$BLANK3$*/)6、下列程序实现从键盘接受3 个数
16、,输出最大数和最小数,完善程序。程序如下:#i ncIudem a i n()i nt a,b,c,*pm a x,*pm i n;pri ntfCi nput th ree num b ers:nz,);sca nf(%d%d%d,&a,&b,&c);i f(a b)pm a x=&a;pm i n=&b;e I se pm a x=&b;pm i n=&a;i f(c*pm a x)pm a x=&c;/*$BLANK1$*/el se i f(c*pm i n)pm i n=&c;/*$BLANK2$*/pr i ntf(m a x=%d,m i n=%d n,*pm a x,*pm i
17、 n);/*$BLANK3$*/)7、以下程序的功能是:统计用0-9之间不同的三个数字构成一个三位数有多少种方法,如:123,345,182等,请填空m a i n O i n t i,j,k,co u n t;co u n t=0;/*$B LA NK1$*/fo r(i=1;i =9;i+)fo r(j=0;j =9;j+)i f(l=j)co n t i n u e;/*$B LA NK2$*/el s efo r (k=0;k =9;k+)i f(k!=l&k!=j)co u n t+;/*$B LA NK3$*/p r i n t f(%d”,co u n t);8、求级数s=1*1
18、+2*2+3*3+4*4+.+n*n,求前n 项之和小于50000时的最大的n的值#i n cI u de m a i n Ol i n t i,n,s;s=0;/*$B LA NK1$*/i=1;wh i l e(s =50000)(s+=l*i;/*$B LA NK2$*/i=i+1;1n=l-1;/*$B LA NK3$*/p r i n t f(n=%d,n);)9、输出以下图形(数字之间没有空格,每行第一个数字前也没有空格)00010000011100701111101111111011111000111000001000#i n cl u de m a i n Ol i n t i
19、,j;fo r(i=-3;i =3;i+)j=1;wh i l e(j =a b s(i)/*$B LA NK1$*/(p r i n t f(0);j+;)j=1;wh i l e(j =7-2*a b s(i)/*$B LA NK2$*/p r i n t f(T);j+;)j=1:wh i l e(j =a b s(i)/*$B LA NK3$*/(p r i n t f(w0w);J+;p r i n t f(n);)10、以下程序的功能是求两个整数的最大公约数,在主函数中输入2 个数。m a i n ()i n t m,n,r,t;p r i n t f C I n p u t t
20、wo n u m b er,p I ea s e!n,z);s ca n f(%d,%d,&m,&n);i f(m 0)r=m%n;m=n;n=r;/*$B LA NK2$*/)p r i n t f(gcd=%d n”,m);/*$B LA NK3$*/)11、以下程序输入一行字符(以回车结束输入),然后将其中所有字符 2 换成字符阡二#i n cl u de#i n cl u dem a i n ()ch a r s 80;i n t i;get s (s);l=0;/*$B LA NK1$*/wh i l e(s i !=,0,)/*$B LA NK2$*/i f(s i =b)s i
21、=f;I+;/*$B LA NK3$*/)p r i n t f(%s n,s);812、下列程序实现从键盘接收3 个数,输出最大数和最小数,完善程序。#i n cI u dem a i n O i n t a,b,c,*p m a x,*p m i n;p r i n t f(,zi n p u t t h r ee n u m b er s:n,z);s ca n f(%d%d%d”,&a,&b,&c);i f(a b)p m a x=&a;p m i n=&b;el s e p m a x=&b;p m i n=&a;i f(c*p m a x)p m a x=_;/*$B LA NK1
22、$*/el s e i f(c*p m i n)p m i n=_;/*$B LA NK2$*/p r i n t f(z,m a x=%d,m i n=%d n,_ _ _);/*$B LA NK3$*/)13、从键盘接收20个整数,统计其中正数的个数以及所有正数之和。#i n cI u de m a i n O i n t i,a 20,co u n t;l o n g s u n=0;fo r(i=0;i 20;i+)s ca n f&a i );/*$B LA NK1$*/co u n t=0;/*$B LA NK2$*/fo r(i=0;i 0)s u n+=a i ;co u n
23、t+;/*$B LA NK3$*/)p r i n t f(%d,%I d”,co u n t,s u n);)14、以下程序对学生的记录数据统计不及格的人数并输出不及格学生的信息,请填空。(n u m 域代表学号,n a m e域代表姓名,s cr o e域代表成绩)s t r u ct s t u i n t n u m;ch a r n a m e 12;fl o a t s co r e;);m a i n()s t r u ct s t u s t u d 5 =101,“Li p i n g”,45,/*$B LA NK1$*/102,z zZ h a n g p i n g”,6
24、2.5,103,“H e fa n g”,92.5,104,“C h en g I i n g”,87),105,“W a n g m i n g”,58 ;i n t i,n=0;p r i n t f(z,n u m t n a m e t s co r e n,z);i=0;wh i I e(i 5)(i f(s t u d i .s co r e 60)/*$B LA NK2$*/p r i n t f(%d t%s t%.2f n”,s t u d i .n u m,s t u d i .n a m e,s t u d i .s co r e);n+;/*$B LA NK3$*/)i
25、+;9)p r i n t f(n=%d n”,n);!、编程题1、程序设计:利用下面公式求 s 的值;s=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-1/(4*5*6)+.+1/(19*20*21)-1/(20*21*21)#i n cl u de PR I NT(fl o a t s)F I LE *o u t;i f(o u t=fo p en(C:24000101 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,s=%f,s);fcI o s e(o u t);)m a i n ()fI o a t s;PR I NT (s
26、);)2、一个自然数除以2 余 1,除以3 余 2,除以4 余 3,除以5 余 4,除以7 余 5,求满足这个条件的最小的自然数。输出格式:n=23#i n cl u de PR I NT(i n t n)F I LE *o u t;i f(o u t=fo p en(C:24000101 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,,n=%d,I n);fcI o s e(o u t);)m a i n ()i n t n;PR I NT (n);3、编写程序,计算500到 1300之间所有既能被7 整除又能被13整除的自然数之和。输出格式:
27、26。#i n cl u de PR I NT(i n t s)F I LE *o u t;i f(o u t=fo p en(C:24000103 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,%d”,s);fcl o s e(o u t);)m a i n ()PR I NT (s);)4、输 出 100-300之间的全部素数的和。#i n cI u de PR I NT(i n t s)F I LE *o u t;i f(o u t=fo p en(C:24000101 R E S U LT.T X T,w+)!=NU LL)fp r i
28、n t f(o u t,s=%d,s);fcI o s e(o u t);)m a i n ()10PR I NT (s);15、编写程序,计算 s=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+.+1/(1*2*3*.*n)的值。说明:本题以 n=10 为例。输出格式:s =1.123456#i n cl u de PR I NT(fl o a t s)F I LE *o u t;i f(o u t=fo p en(C:24000108 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,s=%f,s);fcI o s e(o u
29、t);)m a i n O fI o a t s;PR I NT(s);)6、求所有的“水仙花数”之和。所 谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例 如“153”是一 个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。输出格式23456#i n cl u de PR I NT(i n t s)F I LE *o u t;i f(o u t=fo p en(C:24000107 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,%d”,s);fcI o s e(o u t);)m a i n ()(PR I NT
30、(s);7、在大于500的素数中,输出前5 个素数的和输出格式:s=23516#i n cI u de PR I NT(i n t s)F I LE *o u t;i f(o u t=fo p en (z,K:24000104 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,s=%d,s);fcI o s e(o u t);1m a i n O i n t s=0;PR I NT (s);18、有两个小于4 0 的正整数a 和 b,a的平方与b的和是1053,b的平方与a的和是873,请编程求满足条件的a 和 b的值。(提示:满足条件的a,b的值唯
31、一)输出格式:a=3,b=4#i n cI u de PR I NT(i n t a,i n t b)F I LE *o u t;i f(o u t=fo p en(K:24000108 R E S U LT.T X T,w+)!=NU LL)11fp r i n t f(o u t,z,a=%d,b=%d”,a,b);fcI o s e(o u t);)m a i n O(i n t a,b;PR I NT (a,b);)9、根据下列公式,计算A 30的值。(必需使用循环)A 1=1,A 2=1,A 3=3/(A 2+A 1),A 4=4/(A 3+A 2),.A 30=30/(A 29+A
32、 28)输出格式:A 30=7.235167#i n cI u de PR I NT (fl o a t f)F I LE *o u t;i f(o u t=fo p en(C:24000114 R E S U LT.T X T,w+)!=NU LL)fp r i n t f(o u t,A 3O=%f”,f);fcI o s e(o u t);m a i n ()PR I NT (s);)10、计算200到 700之间所有能被“整除的奇数之和。#i n cI u de PR I NT(i n t s)F I LE *o u t;i f(o u t=fo p en (Z,C:24000145
33、R E S U LT.T X T,Z,,zw+,z)!=NU LL)fp r i n t f(o u t,%d”,s);fcI o s e(o u t);)m a i n O PR I NT (s);11、搬砖总题。36人搬家6 块砖,男人1 人搬3 块砖,女 人 1 人搬2 块,小孩3 人 搬 1 块。男人、女人、小孩都必须有,问各有几人?(男人、女人、小孩数量均不得为0,答案是唯一的。)输入格式:m e n=3,w o m e n=4,c h i l d=5#i n c l u d e P R I N T (i n t a,i n t b,i n t c)FIL E*o u t;i f (
34、o u t 二 f o p e n(C:24000116 R ES U L T.T X T,w+)!=N U L L)f p r i n t f(o u t,m e n=%d,w o m e n=%dr c h i Id=%d”,a,b,c);f c Io s e (o u t);)m a i n Oi n t a,b,c;P R IN T (a,b,c);)12、某人摘下一些桃子,卖掉一半,又吃了两只;第二天卖掉剩下的一半,又吃了两只;第三天、第四天、第五天、第六天、第七天等都如此办理,第十六天一看,发现就剩三只桃子了。编写程序,求此人共摘了多少只桃子?#i n c l u d e P R
35、IN T d o n g s)FIL E*o u t;i f (o u t=f o p e n (Z,C:24000147 R ES U L T.T X T,Z,z/w+z,)!=N U L L)f p r i n t f (o u t,%Id”,s);f c Io s e (o u t);12m a i n ()(P R IN T (s);13、利用下面公式求s的 值(求 50项之和)S=1/3-(2/5)+(3/7)-(4/9)+(5/11)-(6/13)+.+(49/49)+50/101输出格式:s=0.123456#i n c l u d e P R IN T(f l o a t s)
36、FIL E*o u t;i f (o u t=f o p e n(C:24000101 R ES U L T.T X T,w+)!=N U L L)f p r i n t f (o u t,s=%f,s);f c Io s e(o u t);1m a i n()(P R IN T (s);114、一个素数加个100000后是37 的倍数,求满足这个条件的最小的素数。#i n c l u d e P R IN T(i n t n)FIL E*o u t;i f(o u t=f o p e n(C:24000135 R ES U L T.T X T,w+)!=N U L L)f p r i n t f (o u t,n=%d,n);f c Io s e(o u t);1m a i n ()i n t n;P R IN T(n);15、在大于500的素数中,输出前5 个素数的和输出格式:s=23516#i n c Iu d e P R IN T(i n t s)FIL E*o u t;i f (o u t=f o p e n (Z,K:24000104 R ES U L T.T X T,w+)!=N U L L)f p r i n t f (o u t,s=%d,s);f c Io s e(o u t);1m a i n()i n t s=0;P R I N T (s);)13