c语言国二考试编程题答案(共65页).doc
《c语言国二考试编程题答案(共65页).doc》由会员分享,可在线阅读,更多相关《c语言国二考试编程题答案(共65页).doc(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。第一个for循环用来计算score数组中分数的总和,然后用aver/=m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j的递增方式。#include #include #include int fun(int score,int m
2、,int below) int i,j=0,aver=0; for(i=0;im;i+) aver+=scorei; aver/=m; for(i=0;im;i+) if(scoreiaver) belowj+=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 :); for(i=0;in;i+) printf(%4d,belowi);2请编写函数fun,它的功能是:求出
3、1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。该题关键就是如何表示能被7或11整除,但不能同时被7和11整除。用(i%7=0) | (i%11=0)来表示能被7或11整除,用 !(i%7=0) & (i%11=0)来表示不能同时被7和11整除。#include #include void fun(int *a,int *n) int i,m=0;for(i=1;i1000;i+)if(i%7=0) | (i%11=0) & !(i%7=0) & (i%11=0) am=i;m+=1;*n=m; main( ) int a
4、a1000,n,k;clrscr( );fun(aa,&n);for(k=0;kn;k+)if(k+1)%10=0) printf(n);else printf(%d,aak);3请编写函数void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。由于要求的数不能是偶数故编程时从1开始循环而步长为2这样正好保正i永远的奇数。这里也要注意存放结果的数组pp的下标变化方式。#include #include void
5、 fun(int x,int pp,int *n) int i,j=0; for( i=1;i=x;i=i+2) if(x%i=0) ppj+=i; *n=j; main( ) int x,aa1000,n,i; printf(n please enter an integer number:n); scanf(%d,&x); fun(x,aa,&n); for(i=0;in;i+) printf(%d ,aai);4请编写一个函数void fun(char *tt,int pp),统计在字符串中a到z26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcd
6、eabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0本题采用的是字母的ASCII码值与数组pp下标的对应转换关系分别求出对应字母的个数。第一个for是给pp赋初值0,第二个for用于控制在字符串内从头到尾移动。由于字母a的ASCII码值为97而它的个数要放在pp0中,而a-97的值正好为0。#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
7、( ) char aa1000; int bb26,k; clrscr( ); printf(nPlease enter a char string:); scanf(%s,aa); fun(aa,bb); for(k=0;k26;k+) printf(%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个所以用dowhile循环来控制。#i
8、nclude #include void fun(int m,int k,int xx) int i,j=0,p=m+1; do for( i=2;i=p) xxj+=p; p+; while(jk); main( ) int m,n,zz1000; printf(n please enter two integers:); scanf(%d%d,&m,&n); fun( m,n,zz); for(m=0;mn;m+) printf(%d ,zzm);6请编写一个函数void fun(char a,char b,int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除
9、后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串World,然后输入3,则调用该函数后的结果为Word。#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:n) ; gets(strl); printf (Enter the position dele
10、ted:); scanf (%d,&n); fun(strl,str2,n); printf (The new string is:%s n,str2); wf=fopen(out.dat,w); fun(world,str2,3); fprintf(wf,%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。#include #include i
11、nt fun(int *s,int t,int *k) int i,max; max=s0; for( i=0;imax) max=si;*k=i; main( ) int a10=876,675,896,101,301, 401,980,431,451,777,k; fun(a,10,&k); printf(%d,%dn,k,ak);8编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.+1/(1+2+3+4+.+n),例如:若n的值为11时,函数的值为1.。#include float fun(int n)
12、 int i,sum=1; float s=1; for(i=2;i=n;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)!。例如:m=12,n=8时,运行结果为495.。#include #include float fun( int m,int n) int i,j,k; long int t=1,s=1,p=1; float q; for(i=1;i=m;i+) t*=i; for(j=1;j=n;j+) s*=j; for(k=1;k=m-n;k+)
13、 p*=k; q=(float)t/s/p; return q;main( ) printf(np=%lfn,fun(12,8);10编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。Xn+1=cos(Xn)迭代步骤如下:(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的一个实根,作为函数值返回。 程序将输出结果Root=0.。 #include #include #incl
14、ude float fun() float x0,x1=0; do x0=x1; x1=cos(x0); while( fabs(x0-x1)1e-006); return x1;main( ) printf(root=%fn,fun();11下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如:a数组中的值为该题的关键是如何表示出左下半角的元素,当从上往下到第i行时只有左边的i个元素要置为0(每行总是如此)。用外层for来控制行而内嵌的for来控制每行的左边元素,故而在内嵌for中j最大只能循环到i(
15、即表示出第i行左边的i个元素)。197 097a=238008456 ,则返回主程序后a数组中的值应为000 。#include#include#include #define N 5 int fun(int aN) int i,j; for(i=0;iN;i+) for(j=0;j=i;j+) aij=0; main( ) int aNN,i,j; printf(* The array *n); for(i=0;iN;i+) for(j=0;jN;j+) aij=rand( )%10; printf(%4d,aij); fun(a); printf(The resultn); for(i=0
16、;iN;i+) for(j=0;jN;j+) printf(%4d,aij);12下列程序定义了NN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:若a数组中的值为则返回主程序后s的值应为3.375。注意不能重复计算,第一个for循环求出第一列与最后一列的和,第二个for循环求出第一行与最后一行(已除去两头元素),要注意第二个for中起始为1,最后为N-2。#include #include #include #define N 5 double fun (int wN) int i,t=0; double s=0;
17、for(i=0;iN;i+) s+=wi0+wiN-1;t+=2; for(i=1;iN-1;i+) s+=w0i+wN-1i;t+=2; s=s/t; return s;main( ) int aNN=0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1;int i,j;double s; printf(* The array *n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); s=fun(a); printf(* The result *n); printf(The sum is %lfn,s
18、);13请编一个函数void fun(int ttMN,int ppN),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。该题用for(i=0;iN;i+)来控制一列一列地找,而内嵌循环for(j=0;jM;j+)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)。#include conio.h #include stdio.h#define M 3 #define N 4 void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试 编程 答案 65
限制150内