函数练习题1、在C语言中,正确的说法是( A )A.函数内部和外部定义的变量同名是合法的B.只要形参和实参都是变量,那么形实结合一定是地址传递C.变量的定义和声明(也称说明)功能是相同的D.没有return 的函数就失去了返回功能2. 若程序中定义了以下函数double myadd(double a,double B){ return (a+B) ;}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)A) double myadd(double a,B);B) double myadd(double,double);C) double myadd(double b,double A);D) double myadd(double x,double y);3. 有以下程序void f(int v , int w){ int t;t=v;v=w;w=t;}int main( ){ int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z) f(y,z);else f(x,z);printf(“%d,%d,%d\n”,x,y,z);return 0;}执行后输出结果是( C )A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,14. 以下叙述正确的是(C)A) c程序由主函数构成B) c程序由函数和过程构成C) c程序由函数构成D) 在c程序中,无论是整形值还是实型值,只要在允许的范围内,都能准确无误的表示5. 构成c语言程序的基本结构单位是(A)A)函数B)过程C)复合语句D)语句6. C语言规定:在一个源程序中,main函数的位置(C)。
A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意 D)必须在最后7.在C语言中,下列函数经常与getchar()组合起来使用的函数是(D)A)scanf() B)strcpy() C)puts() D)putchar()8.C语言自定义函数的返回值的类型是由(B)决定的。
A)return语句中的表达式类型 B)定义函数时,指定函数值类型C)调用函数时临时确定的 D)无法确定9.函数的实参为数组名时,形参与实参结合的传递方式为地址传递。
10.int func(int n){if (n= =0)return 0;else if (n= =1) return 1;else return n*n+func(n-2);}int main(){printf("%5d%5d\n",func(4),func(5));return 0;}以下程序的输出结果是: 20 3511.以下程序的输出结果是(6)int add(int a, int b){ return (a+b);}int main(){ int x=1,y=2,z=3,s;s=add(add(x,y),z);printf(“%d”,s);return 0;}12. 以下程序中,主函数调用了Line M ax函数,实现在N行M列的二维数组中,找出每一行上的最大值。
请填空。
#define N 3#define M 4void Line M ax(int x[N][M]){ int i,j,p;for ( i=0;i<N; i++ ){ p=0;for ( j=1;j<M; j++ )if(x[i][p]<x[i][j]) 【1】p=j ;printf(″The max value in line is %d\n″, 【2】x[i][p] );}}main(){ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};【3】Line M ax(x) ;return 0;}13. 若用数组名作为函数调用时的实参,则实际上传递给形参的是。
(A)A) 数组首地址B) 数组的第一个元素值C) 数组中全部元素的值D) 数组元素的个数14.在C语言中,函数的数据类型是指A。
A) 函数返回值的数据类型B) 函数形参的数据类型C) 调用该函数时的实参的数据类型D) 任意指定的数据类型15.定义一个函数实现交换x和y的值,并将结果正确返回。
能够实现此功能的是____。
CA) swapa(int x, int y) B) swapb(int *x, int *y){ int temp;{ int temp;temp=x;x=y;y=temp;temp=x;x=y;y=temp;} }C) swapc(int *x, int *y) D) swapd(int *x, int *y){ int temp;{ int *temp;temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp;} }16.一个函数内有数据类型说明语句如下:double x, y, z(10);关于此语句的解释,下面说法正确的是____。
DA) z是一个数组,它有10个元素。
B) z是一个函数,小括号内的10是它的实参的值。
C) z是一个变量,小括号内的10是它的初值。
D) 语句中有错误。
17.已知函数定义如下:float fun1(int x, int y){ float z;z=(float)x/y;return(z);}主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。
DA) printf("%f",fun1(a, b));B) printf("%f",fun1(&a, &b));C) printf("%f",fun1(*a, *b));D) 调用时发生错误18.下面函数的功能是____。
Ba(s1,s2)char s1[ ],s2[ ];{ while(s2++=s1++) ;}A) 字符串比较B) 字符串复制C) 字符串连接D) 字符串反向19.已知:int a, *y=&a;则下列函数调用中错误的是(D)。
A) scanf("%d", &a);B) scanf("%d", y);C) printf("%d", a);D) printf("%d", y);20.下面程序的输出结果是____。
B#include <stdio.h>int f(char *s){ char *p=s;while(*p!='\0')p++;return(p-s);}int main(){ printf("%d\n", f("ABCDEF"));return 0;}A) 3 B) 6 C) 8 D) 021.下面程序的输出结果是____。
C#include <stdio.h>int func(int a, int b){ int c;c=a+b;return(c);}int main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);return 0;}A) 11 B) 20 C) 21 D) 3122.下面程序的输出结果是____。
#include <stdio.h>int k=1;int main( ){ int i=4;fun(i);printf ("\n%d,%d",i,k);/* ①*/return 0;}int fun(int m){ m+=k;k+=m;{ char k='B';printf("\n%d",k-'A');/* ②*/}printf("\n%d,%d",m,k);/* ③*/}①A) 4,1 B) 5,6 C) 4,6 D) A,B,C参考答案都不对( C)②A) 1 B) -59 C) -64 D) A,B,C参考答案都不对( A)③A) 5,66 B) 1,66 C) 5,6 D) A,B,C参考答案都不对( C) 23.下面程序的输出结果是____。
C#include <stdio.h>void fun(int n, int *s){ int f1, f2;if(n==1||n==2)*s=1;else{ fun(n-1, &f1);fun(n-2, &f2);*s=f1+f2;}}int main( ){ int x;fun(6, &x);printf("%d\n", x);return 0;}A) 6 B) 7 C) 8 D) 924.下面程序的输出结果是____。
Bint w=3;int main(){ int w=10;printf("%d\n",fun(5)*w);return 0;}int fun(int k){ if(k==0) return(w);return(fun(k-1)*k);}A) 360 B) 3600 C) 1080 D) 120025.下面程序的输出结果是____。
D#include <stdio.h>int main( ){ int x=1;void f1( ), f2( int );f1( );f2(x);printf("%d\n", x);retutn 0;}void f1(void){ int x=3;printf("%d ", x);}void f2( int x )int x;{ printf("%d ", ++x);}A) 1 1 1 B) 2 2 2 C) 3 3 3 D) 3 2 126.下面的程序的功能是求一维数组中的最小元素,请将程序补充完整。
void findmin(int *s, int t, int *k){ int p;for(p=0,*k=p;p<t;p++)if(s[p]<s[*k])①;}int main( ){ int a[10], i, *k=&i;for(i=0;i<10;i++)scanf("%d",&a[i]);findmin(a,10,k);printf("%d,%d\n",*k, a[*k]);return 0;}答案:①*k=p27.下面程序的功能是计算s= k!+(k-1)!+…+0! ,请将程序补充完整。