当前位置:文档之家› 函数练习题及答案

函数练习题及答案

单项选择==================================================题号:2914函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是().A、实参与形参是双向传递B、形参和实参可以同名C、实参类型一定要在调用时指定D、形参可以是表达式答案:B题号:4060以下程序的输出结果是main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}func(inta,intb){staticintm,i=2;i+=m+1;m=i+a+b;return(m);}A、8,20B、8,16C、8,17D、8,8答案:C题号:2491请阅读以下程序:#include<stdio.h>#include<string.h> voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);} main(){intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是().A、48579B、48549C、48999D、13579答案:B题号:2643有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} }main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序的运行结果是().A、876543B、321678C、1098765D、345678答案:B程序设计================================================== 题号:5340/*------------------------------------------------ 【程序设计】--------------------------------------------------题目:给定n个数据,求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。

--------------------------------------------------注意:部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数station的花括号中填入所编写的若干语句。

*********Begin**********和**********End**********不可删除------------------------------------------------*/#include"stdio.h"intstation(ints[],intn){/*********Begin**********//**********End**********/}main(){inta[100],n,i,t;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);t=station(a,n);printf("themin_valuepositionis:%d\n",t); TestFunc();}TestFunc(){FILE*IN,*OUT;intn;inti[10];into;IN=fopen("in.dat","r");if(IN==NULL){printf("ReadFileError");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("WriteFileError");}for(n=0;n<10;n++){fscanf(IN,"%d",&i[n]);}o=station(i,10);fprintf(OUT,"%d\n",o);fclose(IN);fclose(OUT);}示例代码:inti,k;k=0;for(i=1;i<n;i++)if(s[i]<s[k])k=i;return(k);题号:5371/*------------------------------------------------【程序设计】--------------------------------------------------功能:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。

例如若n为1000时,程序输出应为:s=153.909064。

*********Begin**********和**********End**********不可删除------------------------------------------------*/ voidTestFunc();#include<math.h>#include<stdio.h>doublefun(intn){/*********Begin**********//**********End**********/}main(){printf("s=%lf\n",fun(1000));TestFunc();}voidTestFunc(){FILE*IN,*OUT;inti;doubles;IN=fopen("in.dat","r"); if(IN==NULL){printf("ReadFILEError"); }OUT=fopen("out.dat","w"); if(OUT==NULL){printf("WriteFILEError"); }fscanf(IN,"%d",&i);s=fun(i);fprintf(OUT,"%lf",s); fclose(IN);fclose(OUT);}示例代码:inti;doubles=0;for(i=1;i<n;i++)if(i%3==0&&i%7==0)s+=i;returnsqrt(s);程序填空==================================================题号:599/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。

-------------------------------------------------------*/#include"stdio.h"/***********FILL***********/intfun(_____){intm=0,mc=0,j,n;/***********FILL***********/while(k>=2&&_____){/***********FILL***********/if(k%13==0||_____){m=m+k;mc++;}k--;}/***********FILL***********/_____;}main(){printf("%d\n",fun(500));}答案:位置1:intk位置2:mc<10【或】10>mc【或】mc<=9【或】9>=mc 位置3:k%17==0【或】!(k%17)【或】k/17*17==k 位置4:returnm【或】return(m)题号:546/*给定程序中,函数fun的功能是:将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。

例如,N=3,有下列矩阵123456789计算结果为312645978请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!*/#include<stdio.h>#defineN4voidfun(int(*t)[N]){inti,j,x;/**********FILL**********/for(i=0;i<___1___;i++){/**********FILL**********/x=t[i][___2___];for(j=N-1;j>=1;j--)t[i][j]=t[i][j-1];/**********FILL**********/t[i][___3___]=x;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("Theoriginalarray:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}fun(t);printf("\nTheresultis:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}}答案:位置1:N位置2:N-1位置3:题号:543/*给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

相关主题