2022年湖北专升本C语言函数模拟题
一、单项选择题
1.以下程序的输出结果是(C)。
int d=1;
fun(int p)
{static int d=5;
d+=p;
printf("%d ",d);
return(d);
}
main( )
{ int a=3; printf("%d\n",fun(a+fun(d)));}
A) 6 9 9
B) 6 6 9
C) 6 15 15
D) 6 6 15
2.下列程序执行后的输出结果是( C)。
void func1(int i);
void func2(int i);
char st[ ]="hello,friend!";
void func1(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{printf("%c", st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{int i=0; func1(i); printf("\n");}
A) hello
B) hel
C) hlo
D) hlm
3.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)。
A) 地址传递
B) 单向值传递
C) 由实参传给形参,再由形参传回实参
D) 传递方式由用户指定
4.以下函数值的类型是( A )。
fun( float x )
{float y;
y=3*x-4;
return y;
}
A) int
B) 不确定
C) void
D) float
5.设有以下函数:
f( int a)
{int b=0;
static int c=3;
b++; c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是(A)。
main()
{int a=2, i;
for(i=0;i<3;i++) printf("%d\n", f(a));
}
6.以下程序的输出结果是(B)。
int a, b;
void fun()
{a=100; b=200;}
main()
{int a=5, b=7;
fun();
printf("%d%d\n", a, b);
}
A) 100200
B) 57
C) 200100
D) 75
7.以下所列的各函数首部中,正确的是(C)。
A) void play(var a:Integer, var b:Integer)
B) void play(int a, b)
C) void play(int a, int b)
D) Sub play(a as integer, b as integer)
8.以下程序的输出结果是(C)。
fun(int x, int y, int z)
{z=x*x+y*y; }
main()
{int a=31;
fun(5, 2, a);
printf("%d", a);
}
A) 0
B) 29
C) 31
D) 无定值}
9.当调用函数时,实参是一个数组名,则实参向形参传递的是( B)。
A) 数组的长度
B) 数组的首地址
C) 数组每一个元素的地址
D) 数组每个元素中的值
10.以下程序的输出结果是(A)。
long fun( int n)
{long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{printf("%ld\n", fun(3)); }
A) 1
B) 2
C) 3
D) 4
11.有如下函数调用语句:
func(rec1, rec2+rec3, (rec4, rec5));
在该函数调用语句中,含有的实参个数是( A)。
A) 3
B) 4
C) 5
D) 有语法错
12.有如下程序:
int func(int a,int b)
{return(a+b);}
main( )
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
该程序的输出的结果是( D )。
A) 12
B) 13
C) 14
D) 15
13.以下程序的输出结果是( B)。
long fib(int n)
{if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main( )
{printf(“%ld\n”,fib(3));}
A) 2
B) 4
C) 6
D) 8
14.在 C 语言中,变量的隐含存储类别是( A )。
A) auto
B) static
C) extern
D) 无存储类别
15.在下列的函数调用中,不正确的是( D )。
A) max(a,b);
B) max(3,a+b);
C) max(3,5);
D) int max(a,b);
16.以下程序的输出结果是( C)。
func(int x, int y)
{int z;
z=x+y;
return z;
}
main( )
{int a=10, b=20, c=30, s;
s=func((a--, b++, a+b), c--);
printf(“%d\n”, s);
}
A) 30
B) 40
C) 60
D) 50
17.现有以下程序:
#include
inverse(char str[ ])
{char t;
int i, j;
for(i=0, j=strlen(str); i {t=str[i]; str[i]=str[j-1]; str[j-1]=t; } } main( ) {char str[100]; scanf(“%s”, str); inverse(str); printf(“%s\n”, str); } 如果输入 an anple,该程序的输出结果是(D)。 A) an anple B) elpna na C) an D) na 18.在下列叙述中,正确的一条是( A )。 A) puts 和 gets 函数只能输入或输出一个字符串 B) 在 C 语言中,函数可以递归调用或递归定义 C) 用 scanf 函数输入数据时可以规定精度,例如 scanf(“%7.2f”,&a); D) 外部变量只限于本文件中使用 19.以下程序的输出结果是( C)。 power(int x, int n) {int p; if(n>0) p=power(x, n-1)*x; else p=1; return (p); } main( ) {int x=2, n=3; printf(“%d\n”, power(x, n)); } A) 5 B) 6 C) 8 D) 9 20.在 C 语言的函数中( C)。 A) 必须有形参 B) 形参必须是变量名 C) 可以有也可以没有形参 D) 数组名不能作形参 21.当输入 a1b2c3d4e 时,以下程序的输出结果为( A )。 #include main( ) {char str[40]; printf(“请输入含有四个数字字符的字符串:\n”); scanf(“%s”,str); insert(str); } insert(char str[ ]) {int i; for(i=strlen(str);i>0;i--) {str[2*i]=str[i]; str[2*i-1]= ‘ ’; } printf(“\n 结果是:%s”, str); } A) a 1 b 2 c 3 d 4 e B) 1 2 3 4 C) a 1 b 2 D) 因输入错误,程序出错 22.在下列叙述中,错误的一条是( A )。 A) 主函数 main 中定义的变量在整个文件或程序中有效 B) 不同函数中,可以使用相同名字的变量 C) 函数中的形式参数是局部变量 D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效 23.以下程序的输出结果是( A)。 #include main( ) {int i; for(i=0; i<2; i++) as ( ); } as( ) {int lv=0; static int sv=0; printf(“lv=%d, sv=%d”, lv, sv); lv++; sv++; } A) lv=0,sv=0,lv=0,sv=1 B) lv=0,sv=0,lv=1,sv=1 C) lv=0,sv=0,lv=0,sv=0 D) lv=0,sv=1,lv=0,sv=1 24.在下列叙述中,错误的一条是( B )。 A) 全局变量存放在静态存储区中,在程序开始执行时就给全局变量分配存储区,程序执行完才释放 B) 在有参函数中,形参在整个程序一开始执行时便分配内存单元 C) 用数组名作函数实参和形参时,应在主调函数和被调用函数中分别定义数组 D) 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用 25.在下列语句中,不正确的是( D)。 A) c=2*max(a,b); B) m=max(a,max(b,c)); C) printf(“%d”,max(a,b)); D) int max(int x,int max(int y,int z)); 26.若输入 1.5、2.5,以下程序的输出结果为( C)。 main( ) {int max(float x, float y); float a, b; int c; scanf(“%f, %f” , &a, &b); c=max(a, b); printf(“%d”, c); } max(float x, float y) {float z; z=x>y ? x : y; return(z); } A) 1 B) 2.5 C) 2 D) 3 27.下列程序结构中,正确的是( D)。 A) main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); … } int add(float x,float y) { … } B) main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); … } float add(float x,float y) { … } C) float add(); main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); … } float add(float x,float y) { … } D) float add(float x,float y) { … } main() {float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); … } 28.在下列叙述中,错误的一条是( B)。 A) scanf 函数可以用来输入任何类型的多个数据 B) 数组名作函数参数时,也采用“值传递”方式 C) 如果形参发生改变,不会改变主调函数的实参值 D) 函数的实参与形参的类型应一致 29.以下程序的输出结果是( B)。 main() {int i=1,j=3; printf(“%d”,i++); {int i=0; i+=j*2; printf(“%d,%d”,i,j); } printf(“%d,%d\n”,i,j); } A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3 30.C 语言中形参的缺省存储类别是( A)。 A) 自动(auto) B) 静态(static) C) 寄存器(register) D) 外部(extern) 31.设有如下函数: ggg(float x) {printf(“\n%d”, x*x);} 则函数的类型为( C )。 A) 与参数 x 的类型相同 B) void C) int D) 无法确定 32.C 语言规定,程序中各函数之间( A) A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用 33.下面程序的输出结果是( A)。 main() {int i=2,p; p=f(i,i+1); printf(“%d”,p); } int f(int a,int b) {int c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } A) -1 B) 0 C) 1 D) 2 34.以下程序的输出结果为(B)。 f(int b[ ], int n) {int i, r; r=1; for(i=0; i<=n; i++) r=r*b[i]; return(r); } main() {int x, a[ ]={2,3,4,5,6,7,8,9}; x=f(a, 3); printf(“%d\n”, x); } A) 720 B) 120 C) 24 D) 6 35.下列程序执行后的输出结果是( D)。 f(int a) {int b=0; static c=3; a=c++, b++; return(a); } main( ) {int a=2, i, k; for(i=0;i<2;i++) k=f(a++); printf(“%d\n”, k); } A) 3 B) 0 C) 5 D) 4 36.下列程序执行后输出的结果是( A)。 int d=1; fun(int p) {int d=5; d+=p++; printf(“%d”, d); } main( ) {int a=3; fun(a); d+=a++; printf(“%d\n”, d); } A) 84 B) 96 C) 94 D) 85 37.以下程序的输出结果是( B)。 fun(int k) {if(k>0) fun(k-1); printf(“%d”, k); } main( ) {int w=5; fun(w); } A) 54321 B) 012345 C) 12345 D) 543210 38.以下说法中正确的是( C )。 A) C 语言程序总是从第一个定义的函数开始执行 B) 在 C 语言程序中,被调用的函数必须在 main()函数中定义 C) C 语言程序总是从 main()函数开始执行 D) C 语言程序中的 main()函数必须放在程序的开始部分 39.以下程序的输出结果是( C )。 int abc(int u, int v); main() {int a=24, b=16, c; c=abc (a, b); printf(“%d\n”, c); } int abc(int u, int v) {int w; while(v) {w= u%v; u=v; v=w;} return u; } A) 6 B) 7 C) 8 D) 9 二、填空题 1.下列程序的输出结果是5 6。 int t(int x, int y, int cp, int dp) {cp=x*x+y*y; dp=x*x-y*y; } main( ) {int a=4, b=3, c=5, d=6; t(a, b, c, d); printf("%d %d\n", c, d); } 2.以下程序的运行结果是8,17。 #include main() {int k=4, m=1, p; p=func(k, m); printf("%d,", p); p=func(k, m); printf("%d\n", p); } func(int a, int b) {static int m=0, i=2; i+=m+1; m=i+a+b; return m; } 3.以下程序输出的最后一个值是120。 int ff(int n) {static int f=l; f=f*n; return f; } main() {int i; for(i=1;i<=5;i++) printf("%d\n",ff(i)); } 4.以下函数的功能是:求 x 的 y 次方,请填空。 double fun(double x, int y) {int i; double z; for(i=1, z=x; i return z; } 5.若变量 n 中的值为 24,则 prnt 函数共输出5行,最后一行有4个数。 void prnt(int n, int aa[ ]) {int i; for(i=1; i<=n; i++) {printf("%6d", aa[i]); if(!(i%5)) printf("\n"); } printf("\n"); } 6.以下程序中,主函数调用了 LineMax 函数,实现在 N 行 M 列的二维数组中,找出每一行上的最大值。请填空。 #define N 3 #define M 4 void LineMax(int x[N][M]) 7.函数 pi 的功能是根据以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+ … +1/(n*n)请在下面的函数中填空,完成求π的功能。 #include “math.h” double pi(long n) {double s=0.0; long i; for(i=1;i<=n; i++) s=s+1.0/i*i; return(sqrt(6*s)); } 8.设在主函数中有以下定义和函数调用语句,且 fun 函数为 void 类型;请写出 fun 函数的首部void fun( double b[10][22])。要求形参名为 b。 main() {double s[10][22]; int n; … fun(s); … } 9.输入 12 时,程序输出结果为12 is not prime number.;若输入 17,输出结果为 17 is primenumber.。 main() {int number; scanf(“%d”, &number); if(prime(number)) printf(“\n%d is prime number.”, number); else printf(“\n%d is not prime number.”, number); } int prime(int number) {int flag=1, n; for(n=2; n if(number%n= =0) flag=0; return(flag); } 10.理解下面的程序,填空完善程序。 main() {int a, b, c; scanf(“%d %d”,&a,%b); c=max(a, b); printf(“a=%d b=%d max=%d\n”, a, b, c); } int max(x, y) int x,int y; {int z; if(x>y) z=x; else z=y; return z; } 11.下面程序的输出结果是2,5,1,2,3,-2。 main() {int a=3, b=2, c=1; c-=++b; b*=a+c; {int b=5, c=12; c/=b*2; a-=c; printf(“%d, %d, %d,”, a, b, c); a+=--c; } printf(“%d, %d, %d”, a, b, c); } 12.下面的 findmax 函数返回数组 s 中值为最大的元素的下标,数组中元素的个数由 t 传人,请填空。 findmax(int s[ ], int t) {int k, p; for(p=0, k=p; p if(s[p]>s[k]) p=k; return k; } 13.下面程序的输出结果是7。 fun(int x) {int p; if(x= =0||x= =1) return(3); p=x-fun(x-2); return p; } main() {printf(“%d\n”, fun(9));} 14.函数 fun 的功能是:使一个字符串按逆序存放,请填空。 void fun(char str[ ]) {char m; int i, j; for(i=0, j=strlen(str); i< strlen(str); i++, j--) {m=str[i]; str[i]=str[j-1]; str[j-1]=m; } printf(“%s\n”, str); } 以上就是关于2022年湖北专升本C语言函数模拟题的全部内容了,如果你还有专升本相关的疑惑(如专升本报名、考试动态、院校招生简章、统考动态、湖南专升本院校、历年真题、考试大纲、专升本等相关信息),可以在文章下方留下你的联系方式,老师会第一时间联系到你,为你答疑解惑哦! 部分内容来源于网络转载、学生投稿,如有侵权或对本站有任何意见、建议或者投诉,请联系邮箱(1296178999@qq.com)反馈。
未经本站授权,不得转载、摘编、复制或者建立镜像, 如有违反,本站将追究法律责任!