国家计算机题库之编程题.pdf





《国家计算机题库之编程题.pdf》由会员分享,可在线阅读,更多相关《国家计算机题库之编程题.pdf(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国计算机等级考试c语言一一编程题1.m 个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当 score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。第一个fbr循环用来计算score数组中分数的总和,然后用aver/=m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j 的递增方式。/include#include#include int fiin(int scor
2、e,int m,int below)int ij=0,aver=0;for(i=0;im;i+)aver+=scorei;aver/=m;for(i=0;im;i+)if(scoreiaver)below j+=scorei;return j;main()int i,n,below9;int score9=10,20,30,40,50,60,70,80,90);n=fun(score,9,below);printf(nbelow the average score are:”);fbr(i=0;in;i+)printf(,%4d,belowi);2.请编写函数fun,它的功能是:求出1 到 1
3、000之内能被7 或 11整除、但不能同时被7 和 11整除的所有整数并将它们放在a 所指的数组中,通过n 返回这些数的个数。该题关键就是如何表示能被7 或 11整除,但不能同时被7 和 11整除。用(i%7=0)|(i%7=0)来表示能被7 或 11整除,用!(i%7=0)&(i%ll=0)来表示不能同时被7 和 11整除。#include#include void fiin(int*a,int*n)int i,m=0;for(i=l;i1000;i+)if(i%7=0)I I (i%ll=0)&!(i%7=0)&(i%ll=0)am=i;m+=l;*n=m;main()int aa1000
4、,n,k;clrscr();fun(aa,&n);for(k=0;kn;k+)if(k+l)%10=0)printf(MnH);else printf(n%d,aak);3.请编写函数void fun(int x,int pp,int*n),它的功能是:求出能整除x 且不是偶数的各整数,并按从小到大的顺序放在p p 所指的数组中,这些除数的个数通过形参n 返回。例如,若 x 中的值为30,则有4 个数符合要求,它们是1,3,5,15。由于要求的数不能是偶数故编程时从1 开始循环而步长为2 这样正好保正i 永远的奇数。这里也要注意存放结果的数组pp的卜标变化方式。#include#include
5、 void fiin(int x,int pp,int*n)int ij=0;for(i=l;i=x;i=i+2)if(x%i=0)ppj+=i;*n=j;main()int x,aa1000,n,i;printffn please enter an integer number:nn);scanff%d”,&x);fun(x,aa,&n);fbr(i=0;in;i-H-)printf(M%d,aai);4,请编写一个函数void fun(char*tt,int pp),统计在字符串中宜到N26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,
6、程序的输出结果应该是:3 3 3 22 1 1 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 本题采用的是字母的ASCII码值与数组pp下标的对应转换关系分别求出对应字母的个数。第一个 for是给pp 赋初值0,第二个for用于控制在字符串内从头到尾移动。由于字母豆的ASCII码值为97而它的个数要放在pp0中 而 小97的值正好为0o#include#include void fun(char*tt,int pp)int i;for(i=0;i26;i+)Ppi=0;for(;*tt;tt+)if(*tt=,a,)pp*tt-97+;main()char aa10
7、00;int bb26,k;clrscr();printf(nnPlease enter a char string:);scanfiM%s,aa);fun(aa,bb);ft)r(k=0;k26;k+)printff%d”,bbk);printf(,n);5.请编写一个函数void fun(int m,int k,int xx),该函数的功能是:将大于整数m 且紧靠m 的 k 个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37。本题中的for循环用来判断一个数是否为素数,由于个数只能是k 个所以用do-w hile循环来控制。#includc#incl
8、ude void fim(int m,int k,int xx)int ij=0,p=m+l;do for(i=2;i=p)xxj+=p;P+;while(jk);main()int m,n,zz1000;printffW please enter two integers:n);scanf(%d%d,&m,&n);fiin(m,n,zz);fbr(m=0;m n;m+)printfi(%d n,zzm);6.请编写一个函数void fim(char a口,char b,intn)淇功能是删除一个字符串中指定下标的字符。其中,a 指向原字符串,删除后的字符串存放在b 所指的数组中,n 中存放指
9、定的下标。例如,输入一个字符串World,然后输入 3,则调用该函数后的结果为Wordo#include#include#define LEN 20void fun(char a,char b,int n)int i,k=0;for(i=0;ai!=,0,;i+)if(i!=n)bk+=ai;bk=,0,;main()FILE*wf;char strlLEN,str2LEN;int n;printf(Enter the string:nM);gets(strl);printf(Enter the position deleted:);scanf(n%dn,&n);fun(strl,str2,n
10、);printf(nThe new string is:%s nn,str2);wf=fopen(nout.datH,wn);fun(worldM,str23);,rintf(w“s”,str2);fclose(wf);7.请编写个函数int fun(int*s,int t,int*k),用来求出数组的最大元素在数组中的下标并存放在k 所指的存储单元中。例如,输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。#includc#include int fiin(int*s,int t,int*k)int i,max;max=s0
11、J;for(i=0;imax)max=sij;:ik=i;main()int al 0=876,675,896,101,301,401,980,431,451,777,k;fun(a,10,&k);printfn%d,%dn,k,ak);8.编 写 函 数 fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n 通过形参传入。s=l+l/(l+2)+l/(l+2+3)+.+1/(1+2+3+4+n),例如:若 n 的值为 11 时,函数的值为 1.833333。#include float fun(int n);int i,sum=l;float s=l;for(i=2;i=n;
12、i+)sum=sum+i;s=s+1.0/sum;return s;long chsdc(int n)int i,s;s=0;for(i=0;in。p=m!/n!(m-n)!o 例如:m=12,n=8 时,运行结果为 495.000000o#include#include float fun(int m,int n)int ij,k;long int t=l,s=l,p=l;float q;for(i=l;i=m;i+)t*=i;for(j=l;j=n;j+)s*=j;for(k=l;k=m-n;k+)p*=k;q=(float)t/s/p;return q;main()printf(nnp=
13、%lfnn,fun(12,8);10.编写函数fun,它的功能是:利用以卜.所示的简单迭代方法求方程cos(x)-x=0的一个实根。Xn+l=cos(Xn)迭代步骤如下:取 X1初值为0.0;(2)x0=xl,把 x l 的值赋给x0;(3)xl=cos(x0),求出一个新的 xl;(4)若 xO-xl的绝对值小于0.000001,则执行步骤,否则执行步骤(2);(5)所求x l 就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739085,#include#include#include float fun()float x0,xl=0;do x0=xl;
14、xl=cos(x0);while(fabs(x0-x 1)le-006);return xl;main()printf(,root=%ftn,fun();11.下列程序定义了 N xN 的二维数组,并在主函数中自动赋值。请 编 写 函 数 该 函 数 的 功 能 是:使数组左下半三角元素中的值全部置成0。例如:a 数组中的值为该题的关键是如何表示出左下半角的元素,当从上往下到第i 行时只有左边的i 个元素要置为0(每行总是如此)。用外层fbr:来控制行而内嵌的for来控制每行的左边元素,故而在内嵌for中j 最大只能循环到i(即表示出第i 行左边的i 个元素)。1 9a=2 34 5则返回主程
15、序后a 数组中的值应为07860009 70 80 O#include#include#include#define N 5int fun(int aN)int ij;for(i=0;iN;i+)for(j=0;j=i;j+)aiJU=O;main()i n t a N N ,i,j;p r i n t f(n*T h e ar r ay *nn);f d r(i=O;i N;i-H-)f o r(j=O;j N;j+)a i j =r a n d()%1 0;p r i n t f(,%4 d,a i|j );f i i n(a);p r i n t f f The r e s u l t。
16、);f b r(i=O;i N;i-H-)f b r(j=O;j N;j-h+)p r i n t f i;%4 dn,a i j );1 2 .下列程序定义了 NxN的二维数组,并在主函数中赋值。请编写函数f u n,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:若a数组中的值为0 11 9a=2 34 55 92 7 97 4 58 3 16 8 21 4 1则返回主程序后s的值应为3.37 5。注意不能重复计算,第一个f o r循环求出第一列与最后一列的和,第二个f o r循环求出第一行与最后一行(已除去两头元素X要注意第二个f o r中起始为1,最后为N-
17、2 o#i n c l u d e#i n c l u d e#i n c l u d e#d e f i n e N 5d o u b l e f u n (i n t w N )int i,t=0;double s=0;for(i=0;iN;i+)s+=wi0+wiN-l;t+=2;for(i=l;iN-l;i+)s+=w0i+wN-li;t+=2;s=s/t;return s;m a i n()i n t a N N =0,l,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1;i n t i,j;d o u b l e s;p r i n t f
18、(n*T h e a r r a y *nM);f b r(i=O;i N;i-H-)f o r(j=0;j N;j+)p r i n t f(,%4d,a i j );s=f u n(a);p r i n t *T h e r e s u l t *nM);p r i n t f i fnT h e s u m i s%l f nn,s);1 3.请编一个函数vo i d f u n(i n t t t M N ,i n t p p N ),t t指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。该题用f o r(i=0;i
19、 N;i+)来控制一列一列地找,而内嵌循环for(j=0;jvM;j+)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)。#include conio.h”#include stdio.h#define M 3#define N 4void fun(int ttMN,int ppN)int ij;for(i=0;iN;i+)PP=ttOi;for(j=0;jM;j+)if(ttjippi)ppi=ttji;)main()int tMN=22,45,56,30
20、,19,33,45,38,20,22,66,40;int pN,ij,k;printffthe original data is:nu);fbr(i=O;iM;i-H-)for(j=0;jN;j+)printff%6d”,ti皿);fun(t,p);printf(,nthe result is:nH);fbr(k=0;kN;k+)printf(%4d,pk);1 4.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:若二维数组中的值为1 3 5 7 92 9 9 9 46 9 9 9 81 3 5 7 0则函数值为61。该题的第一个fo
21、r循环是计算矩阵的最上一行和最下一行的总和,第二个for是计算除两头元素以外的最左一列和最右一列的元素的和,最后sum就是周边元素的和。#include#include#define M 4#define N 5int fun(int aMN)int sum=0,i;for(i=0;iN;i+)sum+=a0i+aM-1 i;for(i=l;iM-l;i+)sum+=ai0+aiN-l;return sum;main()intaaMN=l,357,9,299,9,4,6,9,9,9,8,l,3,5,7,0;inti,j,y;printfi(nThe original data is:n);fb
22、r(i=0;i M;i+)fbr(j=O;jN;j+)printf(n%6dn,aaij);y=fun(aa);printf(HnThe sum:%dnn,y);15.请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若 w 是 n(nN2)位的整数,则函数求出w 的后n-1位的数作为函数值返回。例如:w 值为5923,则函数返回923;若 w 值为923,则函数返回23。由于unsigned型整数在0-65535这间,只要它大于10000则 对 10000求余即得出后面4 位,否则如果大于1000则 对 1000求余得出后3 位数,这样一层一层往小
23、的判断。由于return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用if语句。#include#include unsigned fun(unsigned w)if(w=10000)return w%10000;if(w=1000)return w%1000;if(w=100)return w%100;return w%10;main()unsigned x;prints“enter a integer number:);scanf(n%uH,&x);if(x10)printf(ndata error!n);else printf(nthe result:%u
24、n*fun(x);16.请编一个函数float fun(double h),函数的功能是对变量h 中的值保留2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。例如:若h 值 为 8.32433,则函数返回8.32;若 h 值为8.32533,则函数返回8.33h乘 以 1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5 运算时。如原小数点后第三位为4 及以下则加 5 后还是不能进一位(即四舍),如是5 及以上则加5 后该位就要向前进一位数(即五入)。进行加5 运算后除10再赋给一个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这
25、样又出现了两位小数。该题中,进行四舍五入后一 定 要 赋 给 个整型变量才能将不用部分彻底变成0。#include#include float fun(float h)long t;h=h*1000;t=(h+5)/10;return(float)t/100;main()float a;printf(nEnter a:n);scanf(P,&a);print-The original data is:);printf(,%fnn,a);printf(nThe result:%6.2fnn,fun(a);1 7.请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。例如:字符串
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国家 计算机 题库 编程

限制150内