2021智慧树知到(山东理工大学)《C语言编程新思路》章节测试答案共14章(5)

答案:C

5、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。

A、函数调用可以作为独立的语句存在

B、函数调用可以作为一个函数的实参

C、函数调用可以出现在表达式中

D、函数调用可以作为一个函数的形参

答案:D

6、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A、地址传递

B、单向值传递

C、由实参传给形参,再由形参传回实参

D、传递方式由用户指定

答案:B

7、有以下程序: #include <stdio.h> void fun(int a,int b,int c) { a=11; b=22; c=33;} int main(void) { int x=10,y=20,z=30; fun(x,y,z); printf(“%d,%d,%d\n”,x,y,z); return 0; } 该程序输出结果是()。

A、30,20,10

B、10,20,30

C、11,22,33

D、33,22,11

答案:B

8、关于函数参数,说法正确的是()。

A、实参与其对应的形参各自占用独立的内存单元

B、实参与其对应的形参共同占用一个内存单元

C、只有当实参和形参同名时才占用同一个内存单元

D、形参是虚拟的,不占用内存单元

答案:A

9、一个函数的返回值由()确定。

A、return语句中的表达式

B、调用函数的类型

C、系统默认的类型

D、被调用函数的类型

答案:D

10、下列程序的输出结果是()。 fun(int a,int b,int c) { c=a+b;} int main(void) { int c; fun(2,3,c); printf(“%d\n”,c); return 0; }

A、2

B、3

C、5

D、不定

答案:D

11、有以下程序: #include <stdio.h> int fun(int x) { printf(“x=%d\n”,++x); } int main() { fun(12+5); return 0; } 程序的输出结果是()。

A、x=12

B、x=13

C、x=17

D、x=18

答案:D

12、有如下程序: #include <stdio.h> int i=1; int main() { int i=i; printf("%d\n",i); return 0; } 程序的输出结果是()。

A、1

B、0

C、i

D、不确定

答案:D

13、有如下程序: #include <stdio.h> int f(int x) { return x+3;} int main(void) { int a=1; while(f(a)<10) a++; return 0; } 程序执行后,变量a的值是()。

A、7

B、10

C、11

D、9

答案:A

14、以下说法中正确的是()。

A、形参是全局变量,其作用范围仅限于函数内部

B、形参是全局变量,其作用范围从定义之处到文件结束

C、形参是局部变量,其作用范围仅限于函数内部

D、形参是局部变量,其作用范围从定义之处到文件结束

答案:C

15、定义为void类型的函数,其含义是()。

A、调用函数后,被调用的函数没有返回值

B、调用函数后,被调用的函数不返回

C、调用函数后,被调用的函数的返回值为任意类型

D、其余选项都不对

答案:A

16、当全局变量和函数内部的局部变量同名时,在函数内部()。

A、全局变量有效

B、局部变量有效

C、全局变量和局部变量都有效

D、全局变量和局部变量都无效

答案:B

17、有如下程序: #include <stdio.h> fun(int a) { auto int b=0; static int c=3; b=b+1;c=c+1; return(a+b+c); } int main(void) { int a=2,i; for(i=0;i<3;i++) printf(“%d “,fun(a)); return 0; } 它的输出结果是()。

A、7 8 9

B、7 7 7

C、9 9 9

D、8 9 10

答案:A

18、有如下程序: #include <stdio.h> void fun(int x,int y) { int t; if(x>y) {t=x;x=y;y=t;} } int main(void) { int a=4,b=7,c=5; fun(a,b);fun(a,c);fun(b,c); printf(“%d,%d,%d\n”,a,b,c); return 0; } 它的输出结果是()。

A、4,5,7

B、4,7,5

C、7,5,4

D、7,4,5

答案:B

19、有如下程序: #include <stdio.h> f(int a) { int b=0; static int c=3; a=c++; b++; return(a); } int main(void) { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf(“%d\n”,k); return 0; } 该程序的输出结果是()。

A、6

B、3

C、4

D、5

答案:C

20、凡是未指明存储类别的局部变量,其隐含的存储类别是()。

A、register

B、auto

C、static

D、extern

答案:B

第十章测试

1、若有数组名作为函数调用的实参,传递给形参的是()。

A、数组的首地址

B、数组第一个元素的值

C、数组中全部元素的值

D、数组元素的个数

答案:A

2、若使用一维数组名作为函数实参,则以下描述中正确的是 ()。

A、必须在调用函数中说明此数组的大小

B、实参数组类型与形参数组类型可以不匹配

C、在被调用函数中,不需要考虑形参数组的大小

D、实参数组名与形参数组名必须一致

答案:C

3、以下叙述正确的是()

A、C语言中各函数(除主函数外)之间既允许直接递归调用也允许间接递归调用

B、C语言中各函数(除主函数外)之间既不允许直接递归调用也不允许间接递归调用

C、C语言中各函数(除主函数外)之间允许直接递归调用不允许间接递归调用

D、C语言中各函数(除主函数外)之间不允许直接递归调用允许间接递归调用

答案:A

4、下列程序的输出结果是()。 #include <stdio.h> void sub(int x,int y,int *z) { *z=y-x; } int main() { int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); return 0; }

A、5,2,3

B、-5,-12,-7

C、-5,-12,7

D、5,-2,-7

答案:B

5、下列程序的输出结果是()。 #include <stdio.h> void prtv(int *x) { printf ("%d\n",++*x); } int main() { int a=25; prtv(&a); return 0; }

A、23

B、24

C、25

D、26

答案:D

6、下列程序的输出结果是()。 #include <stdio.h>void fun(int *a,int *b){int w; *a=*a+*a; w=*a; *a=*b; *b=w;}int main(){ int x=2, y=3,*px=&x,*py=&y;;fun(px,py);printf("%d,%d\n",x,y);return 0;}

A、4,3

B、2,3

C、3,4

D、3,2

答案:C

7、以下程序运行时,若输入5 10 3,则输出结果是()。 #include <stdio.h> void swap(int *p1,int *p2) {int t; t=*p1; *p1=*p2; *p2=t; return; } int main() {int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(a>c) swap(&a,&c); if(b>c) swap(&b,&c); printf("%d,%d,%d\n",a,b,c); return 0; }

A、5,10,3

B、10,5,3

C、3,5,10

D、3,10,5

答案:C

8、以下程序运行时,若输入5,则输出结果是()。 #include <stdio.h> int fac(int n) {static int k=1; k=k*n; return k; } int main() {int m,i,f; scanf("%d",&m); for(i=1;i<=m;i++) {f=fac(i); printf("%d ",f); } }

A、1 2 3 4 5

B、1 2 6 24 120

C、5

D、120

答案:B

9、下列程序的输出结果是()。 #include <stdio.h> int fun(int a) {int b; if(a==0||a==1) return 3; b=a*a-fun(a-2); return b; } int main() {int x,y; x=fun(3); y=fun(4); printf("%d,%d\n",x,y); return 0; }

A、3,4

B、9,16

C、6,16

D、6,15

答案:D

10、下列程序的输出结果是()。 #include <stdio.h> int fun(int (*p)[3]) {int i,j,n; n=p[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(p[j]>n) n=p[j]; return n; } int main() {int a[2][3]={11,32,13,44,5,6},m; m=fun(a); printf("%d\n",m); return 0; }

A、11

B、44

C、6

D、32

答案:B

11、下列程序的运行结果是()。 #include <stdio.h> void fun(int x, int y, int *cp,int *dp) { *cp=x+y; *dp=x-y; } int main() { int a,b,c,d; a=4;b=3; fun(a,b,&c,&d); printf("%d,%d\n",c,d); return 0; }

A、4,3

B、3,4

C、7,1

D、1,7

答案:C

12、下列程序的运行结果是()。 #include <stdio.h> void op(int (*p)[3]) {int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(p[j]%3==0) printf("%d ",p[j]); } int main() {int s[3][3]={1,2,3,4,5,6,7,8,9}; op(s); return 0; }

A、3 6 9

B、1 2 3

C、1 4 7

D、7 8 9

答案:A

13、以下程序运行时,若输入5,则程序的输出结果是()。 #include <stdio.h> int fun(int n) {if(n==1) return 1; else return n+fun(n-1); } int main() {int m; scanf("%d",&m); m=fun(m); printf("%d\n",m); }

A、6

B、5

C、9

D、15

答案:D

14、以下程序运行时,若输入ab012kd99pk8,则程序的输出结果是()。 #include <stdio.h> void fun(char s[]) {int i,j; for(i=0,j=0;s!='\0';i++) if(s>='0'&&s<='9') s[j++]=s; s[j]='\0'; } int main() {char str[80]; gets(str); fun(str); puts(str); return 0; }

A、012

B、012998

C、99

D、8

答案:B

15、若有以下程序: #include <stdio.h> void f(int *q,int n) {int i; for(i=0;i<n;i++) (*q)++; return; } int main(void) {int a[5]={1,2,3,4,5},i; f(a,5); for(i=0;i<5;i++) printf("%d,",a); return 0; } 则程序的输出结果是()。

A、2,3,4,5,6,

B、2,2,3,4,5,

C、6,2,3,4,5,

D、1,2,3,4,5,

答案:C

16、形参数组与实参数组,在内存空间中是()的。

A、相互独立

B、完全重叠

C、部分重叠

D、随机存储

答案:B

17、若有以下程序: #include <stdio.h> int *fun(int *s,int *t) {if(*s<*t) s=t; return s; } int main(void) {int a=3,b=6,*p=&a,*q=&b,*r; r=fun(p,q); printf("%d,%d,%d\n",*p,*q,*r); return 0; } 则程序的输出结果是()。

A、3,3,6

B、3,6,6

C、6,3,3

D、6,6,3

答案:B

18、若有以下程序: #include <stdio.h> int fun(int x) { if(x>10) {printf("%d-",x%10); fun(x/10); } else printf("%d",x); return; } int main(void) { int z=123456; fun(z); return 0; } 则程序的输出结果是()。

A、1-2-3-4-5-6-

B、1-2-3-4-5-6

C、6-5-4-3-2-1-

D、6-5-4-3-2-1

答案:D

第十一章测试

1、以下叙述不正确的是()。

A、预处理命令行必须以#号开始

B、C程序在执行过程中对预处理命令行进行处理

C、在程序中凡是以#号开始的语句都是预处理命令行

D、以下宏定义是正确的:#define IBM_PC

答案:B

2、在宏定义#define PI 3.1415926 中,用宏名PI代替一个()。

A、常量

B、单精度数

C、双精度数

D、字符串

答案:D

3、以下叙述正确的是()。

A、在程序的一行上可以出现多个有效的预处理命令行

B、使用带参数的宏时,参数的类型应与宏定义时一致

C、宏替换不占用运行时间,只占编译时间

D、宏名必须用大写字母表示

答案:C

4、以下在任何情况下计算平方数时,都不会引起二义性的宏定义是()。

以上相关的更多内容请点击智慧树查看,该题目的答案为网上收集整理仅供参考!

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

大家都在搜

相关推荐:

猜您喜欢