第8章 函数

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)8.1 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

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

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

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

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

考生答案: 正确答案: D

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

A)地址传递

B)单向值传递

C)由实参传形参,再由形参传实参

D)传递方式由用户指定

考生答案: 正确答案: B

8.3 以下正确的说法是

A)定义函数时,形参的类型说明可以放在函数体内

B)return后边的值不能为表达式

C)如果函数值的类型与返回值类型不一致,以函数值类型为准

D)如果形参与实参类型不一致,以实参类型为准

考生答案: 正确答案: C

8.4 以下正确的说法是

A)用户若需调用标准库函数,调用前必须重新定义

B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C)系统根本不允许用户重新定义标准库函数

D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用

考生答案: 正确答案: B

8.5 以下叙述正确的是

A)函数可以嵌套定义但不能嵌套调用

B)函数既可以嵌套调用也可以嵌套定义

C)函数既不可以嵌套定义也不可以嵌套调用

D)函数可以嵌套调用但不可以嵌套定义

考生答案: 正确答案: D

8.6 下面对C语言的描述中,正确的是

A)函数一定有返回值,否则无法使用函数

B)C语言函数既可以嵌套定义又可以递归调用

C)在C语言中,调用函数时,只能将实参的值传递给形参

D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

考生答案: 正确答案: C

8.7 下列说法中错误的是

A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值

B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽

C)静态全局变量可以被其他的编辑单位所引用

D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语

句)时生成,退出其所在的函数体(或复合语句)时消失

考生答案: 正确答案: C

8.8 以下程序有语法错误,有关错误原因的正确说法是

main()

{ int G=5,k;

void prt_char();

...

k=prt_char(G);

...

}

A)语句 void prt_char();有错,它是函数调用语句,不能用void说明

B)变量名不能使用大写字母

C)函数说明和函数调用语句之间有矛盾

D)函数名不能使用下划线

考生答案: 正确答案: C

8.9 以下正确的函数头定义形式是

A)double fun(int x,int y)

B)double fun(int x;int y)

C)double fun(int x,int y);

D)double fun(int x,y);

考生答案: 正确答案: A

8.10 以下所列的各函数首部中,正确的是

A)void play(var :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)

考生答案: 正确答案: C [NextPage]

8.11 不合法的main函数命令行参数表示形式是

A)main(int a,char *c[])

B)main(int arc,char **arv)

C)main(int argc,char *argv)

D)main(int argv,char *argc[])

考生答案: 正确答案: C

8.12 下面函数调用语句含有实参的个数为

func((exp1,exp2),(exp3,exp4,exp5));

A)1

B)2

C)4

D)5

考生答案: 正确答案: B

8.13 设有如下函数

fun (float x)

{ printf("\n%d",x*x);

}

则函数的类型是

A)与参数x的类型相同 B)是void

C)是int型 D)无法确定

考生答案: 正确答案: C

8.14 有以下程序

float fun(int x,int y)

{ return(x+y);}

main()

{ int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序运行后的输出结果是

A)编译出错

B)9

C)21

D)9.0

考生答案: 正确答案: B

8.15 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序

void sort(int a[],int n)

{ int i,j,t;

for(i=0;ifor(j=i+1;jif(a[i]{ t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++) printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是

A)1,2,3,4,5,6,7,8,9,10,

B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10,

D)1,2,10,9,8,7,6,5,4,3,

考生答案: 正确答案: C

8.16 下列程序执行后的输出结果是

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

考生答案: 正确答案: C

8.17 以下函数返回a所指数组中最大值所在的下标值

fun(int *a,int n)

{ int i,j=0,p;

p=j;

for(i=j;iif(a[i]>a[p]) _________;

return(p);

}

在下划线处应填入的内容是

A)i=p

B)a[p]=a[i]

C)p=j

D)p=I

考生答案: 正确答案: D

8.18 有以下程序

int f(int n)

{ if(n==1) return 1;

else return f(n-1)+1;

}

main()

{ int i,j=0;

for(i=1;i<3;i++) j+=f(i);

printf("%d\n",j);

}

程序运行后的输出结果是

A)4

B)3

C)2

D)1

考生答案: 正确答案: B

8.19 有如下程序:

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

main()

{ printf("%d\n",fib(3));

}

该程序的输出结果是

A)2

B)4

C)6

D)8

考生答案: 正确答案: B

8.20 下列函数的运行结果是

main()

{ int i=2,p;

int j,k;

j=i;

k=++i;

p=f(j,k);

printf("%d",p);

}

int f(int a,int b)

{ int c;

if(a>b) c=1;

else if(a==b) c=0;

else c=-1;

return(c);

}

A)-1

B)1

C)2

D)编译出错,无法运行

考生答案: 正确答案: A [NextPage]

8.21 阅读下列程序,当运行函数时,输入asd af aa z67,则输出为

#include

#include

#include

int fun (char *str)

{ int i,j=0;

for(i=0;str[i]!=′\0′;i++)

if(str[i]!=′ ′) str[j++]=str[i];

str[j]= ′\0′;

}

main()

{ char str[81];

int n;

clrscr();

printf("Input a string : ");

gets(str);

puts(str);

fun(str);

printf("%s\n",str);

}

A)asdafaaz67

B)asd af aa z67

C)asd

D)z67

考生答案: 正确答案: A

8.22 以下程序的输出结果是

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

考生答案: 正确答案: A

8.23 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是

void print_value(int *x)

{ printf("%d\n",++*x);

}

A)23

B)24

C)25

D)26

考生答案: 正确答案: D

8.24 下面程序应能对两个整型变量的值进行交换。以下正确的说法是

main()

{ int a=10,b=20;

printf("(1)a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("(2)a=%d,b=%d\n",a,b);

}

swap(int p,int q)

{ int t;

t=p;p=q;q=t;

}

A)该程序完全正确

B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

D)以上说法都不对

考生答案: 正确答案: D

8.25 以下程序的输出结果是

int f()

{ static int i=0;

int s=1;

s+=i; i++;

return s;

}

main()

{ int i,a=0;

for(i=0;i<5;i++) a+=f();

printf("%d\n",a);

}

A)20

B)24

C)25

D)15

考生答案: 正确答案: D

8.26 阅读下面程序段,则执行后输出的结果是

#include "stdio.h"

main()

{ char fun(char,int);

char a=′A′;

int b=13;

a=fun(a,b);

putchar(a);

}

char fun(char a,int b)

{ char k;

k=a+b;

return k;

}

A)A

B)M

C)N

D)L

考生答案: 正确答案: C

8.27 编写求两个双精度数之和的函数,选项中正确的是

A)double add(double a,double b)

{ double s;

s=a+b;

return s;

}

B)double add(double a,b)

{ double s;

s=a+b;

return (s);

}

C)double add(double a double b)

{ double s;

s=a+b;

returns;

}

D)double add(a,b)

{ double a,b,s;

s=a+b;

return (s);

}

考生答案: 正确答案: A

8.28 现有如下程序

#include "stdio.h"

int fun(int x)

{ printf("x=%d\n",++x);

}

main()

{ fun(12+5);

}

则程序的输出结果是

A)12

B)13

C)17

D)18

考生答案: 正确答案: D

8.29 现有如下程序段

#include "stdio.h"

int aa(int x,int y);

main()

{ int a=24,b=16,c;

c=aa(a,b);

printf("%d\n",c);

}

int aa(int x,int y)

{ int w;

while(y)

{ w=x%y;

x=y;

y=w;

}

return x;

}

则程序段的输出结果是

A)8

B)7

C)6

D)5

考生答案: 正确答案: A [NextPage]

8.30 下列程序的输出结果是

#include "stdio.h"

#define N 3

#define M 3

void fun(int a[M][N])

{ printf("%d\n",*(a[1]+2));

}

main()

{ int a[M][N];

int i,j;

for(i=0;ifor(j=0;ja[i][j]=i+j-(i-j);

fun(a);

}

A)3

B)4

C)5

D)6

考生答案: 正确答案: B

8.31 阅读下面程序,则执行后的结果为

#include "stdio.h"

main()

{ fun3(fun1(),fun2());

}

fun1()

{ int k=20;

return k;

}

fun2()

{ int a=15;

return a;

}

fun3(int a,int b)

{ int k;

k=(a-b)*(a+b);

printf("%d\n",k);

}

A)0

B)184

C)175

D)编译不通过

考生答案: 正确答案: C

8.32 阅读下面程序,则程序执行后的结果为

#include "stdio.h"

main()

{ int a=4,b=6,c=7;

double d,fun(int,int,int);

d=fun(a,b,c);

printf("%lf\n",d);

}

double fun(int a,int b,int c)

{ double s;

s=a%b*c;

return s;

}

A)27

B)27.000000

C)28

D)28.000000

考生答案: 正确答案: D

8.33 现有如下程序,则程序的输出结果为

#include "stdio.h"

int f(int a,int b)

{ int c;

if(a>0&&a<10) c=(a+b)/2;

else c=a*b/2;

return c;

}

main()

{ int a=8,b=20,c;

c=f(a,b);

printf("%d\n",c);

}

A)随机数 B)80 C)28 D)14

考生答案: 正确答案: D

8.34 阅读如下程序段,则程序段的执行后的输出结果为

#include "stdio.h"

main()

{ char c;

int i;

char count();

int p(char);

for(i=0;i<30;i++) c=count();

p(c);

}

char count()

{ char str=′A′;

str+=1;

return(str);

}

p(char c)

{ putchar(c);

putchar(′\n′);

}

A)A

B)B

C)a

D)b

考生答案: 正确答案: B

8.35 阅读程序,则执行后的结果为

#include "stdio.h"

main()

{ int i,m,n;

for(i=0;i<3;i++)

{ m=test1();

n=test2();

}

printf("%d,%d\n",m,n);

}

test1()

{ int x=0;

x++;

return x;

}

test2()

{ static int x=0;

x++;

return x;

}

A)1,1

B)1,3

C)3,1

D)3,3

考生答案: 正确答案: B [NextPage]

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)8.36 当调用函数时,实参是一个数组名,则向函数传递的是【1】。

A 考生答案: 正确答案: 数组的首地址

8.37 函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include

#include

float fun (int m, int n)

{ int i;

double p=1.0;

for(i=1;i<=m;i++) 【2】;

for(i=1;i<=n;i++) 【3】;

for(i=1;i<=m-n;i++) p=p/i;

return p;

}

main ()

{ clrscr();

printf ("p=%f\n",fun (12,8));

}

A 考生答案: 正确答案: p=p*i 正确答案: p=p/i

8.38 以下程序的输出结果是【4】。

void fun()

{ static int a=0;

a+=2; printf("%d",a);

}

main()

{ int cc;

for(cc=1;cc<4;cc++) fun();

printf("\n");

}

A 考生答案: 正确答案: 2 4 6

8.39 以下程序运行结果是【5】 。

long fib (int g)

{ switch (g)

{ case 0∶ return 0;

case 1∶

case2∶return 1;

}

return (fib (g-1)+fib(g-2));

}

main ()

{ long k;

k=fib (5);

printf ("k=%(d\n)",k);

}

A 考生答案: 正确答案: k=5

8.40 以下程序的输出结果是【6】。

unsigned fun6(unsigned num)

{ unsigned k=1;

do

{ k *=num; num/=10;

} while (num);

return k;

}

main()

{ unsigned n=26;

printf("%d\n", fun6(n));

}

A 考生答案: 正确答案: 12

8.41 以下函数的功能是【7】。

float av(a, n)

float a[];

int n;

{ int i; float s;

for(i=0, s=0; ireturn s/n;

}

A 考生答案: 正确答案: 求出数组元素平均值

8.42 下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。

fun(int x,int b[])

{ int k=0,r;

do

{ r=x% 【8】 ;

b[ 【9】 ]=r;

x/= 【10】 ;

} while(x);

}

正确答案: 2 正确答案: k++ 正确答案: 2

8.43 下面函数的功能是将一个字符串的内容颠倒过来,请填空。

void fun(char str[])

{ int i,j, 【11】 ;

for(i=0,j= 【12】 ;i{ k=str[i];

str[i]=str[j];

str[j]=k;

}

}

正确答案: k 正确答案: strlen(str)-1

8.44 现有如下程序段,则程序段的输出结果为 【13】 。

#include "stdio.h"

int fun()

{ static int k;

return k;

}

main()

{ int m;

m=fun();

printf("%d\n",m);

}

A 考生答案: 正确答案: 0

8.45 下面函数是一个求阶乘的递归调用函数。请填空。

int fun(int k)

{ if(k==1)【14】 ;

else return( 【15】 );

}

正确答案: return 1 正确答案: k*fun(k-1)

c语言第一二章测试题目及答案,2012年计算机等级二级C语言章节习题及答案(7)...相关推荐

  1. c语言二级填空题及答案,2012年计算机等级二级C语言填空题练习题及答案解析(2)...

    求和.平均值 1. 请补全main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来. main() {long int n; clrscr() ; print ...

  2. c语言第三章作业3.13,2012年计算机等级二级C语言章节习题及答案(13)

    第13章 文件 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上.)13.1 fseek函数的正确调用形式是 A)fseek(文件指针 ...

  3. c语言 条件 设a 3 b 4,2012年计算机等级二级C语言章节习题及答案(4)

    第5章 选择结构程序设计 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上.)5.1 在C程序中,判逻辑值时,用"非0&qu ...

  4. 8b 10b c语言编码,2012年计算机等级二级C语言章节习题及答案(10)

    第10章 指针 同步练习二 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上.)10.1b 下列关于指针变量赋空值的说法错误的是 A) ...

  5. c语言中int*point 其中point是指针变量名,2012年计算机等级二级C语言章节习题及答案(9)...

    第10章 指针 同步练习一 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上.)10.1 若有下面的程序段: char s[]=&qu ...

  6. 二级c语言需要记库函数不,【2017年必备】计算机等级二级C语言上机考试题库(熟记必过,不看后悔).doc...

    PAGE 2015.20.36 第一套程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号.姓名和三门课的成绩.函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序). ...

  7. 2011年6月安徽省计算机水平(二级c语言试题)及解析答案,2011年计算机等级二级C语言填空题练习题及答案解析(2)...

    求和.平均值 1. 请补全main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来. main() {long int n; clrscr() ; print ...

  8. C语言在main中输入2个整数ab,2014年计算机等级二级C语言程序设计习题

    无忧考网为大家收集整理了<2014年计算机等级二级C语言程序设计习题>供大家参考,希望对大家有所帮助!!! 一.选择题(每小题1分,共25分) 1.下列程序的输出结果是( ). int a ...

  9. 江苏省计算机c语言等级考试试题,2012江苏省计算机等级考试c语言试题答案.doc...

    2012江苏省计算机等级考试c语言试题答案.doc 2012春3月江苏省C语言考卷和答案(笔试+上机) [本试卷的欠妥处] 完善程序第13题命题违背常规的程序:按照常规,首先对形参k=n,予以保护,则 ...

最新文章

  1. Nodejs与mysql连接池的应用(pool)
  2. python编写数学公式大全_python - 用python编写数学公式 - 堆栈内存溢出
  3. Google Go Programming In Eclipse
  4. java中list()和listfile()
  5. 面向非易失性内存的持久索引数据结构研究综述
  6. 适用电商BANNER的超酷炫抽象系几何时尚流行系列,PSD炫彩流体海报模板。
  7. php背景图片透明度,css如何使用opacity属性给背景图片加透明度(代码)
  8. 江开计算机应用基础作业1答案,江苏开放大学计算机应用基础形考第二次作业答案.doc...
  9. B站左程云算法视频高级班02
  10. oracle刷同义词报错,oracle 同义词
  11. 阿里云操作系统——飞天(Apsaras)
  12. python转换整数_在Python中将数字转换为整数列表
  13. 快递(EMS)增值业务解决方案
  14. Josh 的学习笔记之数字通信(Part 2——格式化和基带调制)
  15. golang牛牛算法规则与聊天功能
  16. python里怎么使用snip_MacOS下好用的截图软件snip
  17. 机器学习(9)--神经网络
  18. i春秋网络内生安全试验场CTF夺旗赛(第二季)部分Web题WriteUp
  19. “莫装B,装B遭雷劈”的英语翻译竞赛
  20. 985学计算机的博士生好找工作吗,985博士去“专科”当老师,月薪6000挤破门槛,本科生该何去何从...

热门文章

  1. java for循环创建线程_Java创建线程的两种方法
  2. 2021青年男女健康调查:健康心虚指数飙升,90后压力感知最高
  3. html 背景图不随滚轮滚动 文字滚动
  4. 中国石化润滑油有限公司:国之重器展现大国风范
  5. mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`
  6. FPGA学习推荐网站
  7. IP地址和MAC地址之间联系和区别是什么?
  8. websocket(通信)和地址获取
  9. Android Studio 自带模拟器解决输入中文问题_安装x86的搜狗输入法的APK
  10. 客群质量分析、特征挖掘——灵活使用pivot_tabl批量获取特征qcut分布情况