一、选择题

(1)有以下程序

# include void f(char *s, char *t)

{ char k;

k=*s; *s=*t; *t=k;

s++; t--;

if (*s) f(s, t);

}

main()

{ char str[10]="abcdefg", *p ;

p=str+strlen(str)/2+1;

f(p, p-2);

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

}

程序运行后的输出结果是

A)abcdefg B)gfedcba C)gbcdefa D)abedcfg

(2)有以下程序

float f1(float n)

{ return n*n; }

float f2(float n)

{ return 2*n; }

main()

{ float (*p1)(float),(*p2)(float),(*t)(float), y1, y2;

p1=f1; p2=f2;

y1=p2( p1(2.0) );

t = p1; p1=p2; p2 = t;

y2=p2( p1(2.0) );

printf("%3.0f, %3.0f\n",y1,y2);

}

程序运行后的输出结果是

A)8, 16 B)8, 8 C)16, 16 D)4, 8

(3)程序中若有如下的说明和定义语句

char fun(char *);

main()

{

char *s="one",a[5]={0},(*f1)()=fun,ch;

……

}

以下选项中对函数fun的正确调用语句是

A)(*f1)(a);

B)*f1(*s);

C)fun(&a);

D)ch=*f1(s)

(4) 在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则

A) 称为函数的直接递归调用 B) 称为函数的间接递归调用

C) 称为函数的循环调用 D) C语言中不允许这样的递归调用

(5) 有以下程序

void fun(int *a,int i,int j)

{ int t;

if(i{ t=a[i];a[i]=a[j];a[j]=t;

i++; j--;

fun(a,i,j);

}

}

main()

{ int x[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<4;i++) printf("%2d",x[i]);

printf("\n");

}

程序运行后的输出结果是

A) 1 2 6 8 B) 8 6 2 1 C) 8 1 6 2 D) 8 6 1 2

(6) 有以下程序

#include main(int argc ,char *argv[ ])

{ int i,len=0;

for(i=1;iprintf(“5d\n”,len);

}

经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行

ex abcd efg h3 k44

执行后输出结果是

A) 14 B) 12 C) 8 D) 6

(7) 有以下程序

void f(int a[],int i,int j)

{ int t;

if(i{ t=a[i]; a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main( )

{ int i,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++) printf(“%d,”,aa[i]); printf(“\n”);

}

执行后输出结果是

A) 5,4,3,2,1, B) 5,2,3,4,1, C) 1,2,3,4,5, D) 1,2,3,4,5,

(8) 有以下程序

void fun(int *a,int i,int j)

{ int t;

if(i{ t=a[i];a[i]=a[j];a[j]=t;

fun(a,++i,--j);

}

}

main()

{ int a[]={1,2,3,4,5,6},i;

fun(a,0,5)

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

printf("%d",a[i]);

}

执行后的输出结果是

A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6

(9) 有以下程序

int f(int n)

{ if (n==1) return 1;

else return f(n-1)+1;

}

main()

{ int i,j=0;

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

printf(“%d\n”,j);

}

程序运行后的输出结果是

A) 4 B) 3 C) 2 D) 1

(10) 有以下程序

#include main(int argc,char *argv[])

{ int i,len=0;

for(i=1;iprintf(“%d\n”,len);

}

程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:

ex1 abcd efg 10

则运行的结果是:

A) 22 B) 17 C) 12 D) 9

(11) 有以下程序

int fa(int x)

{ return x*x; }

int fb(int x)

{ return x*x*x; }

int f(int (*f1)(),int (*f2)(),int x)

{ return f2(x)-f1(x); }

main()

{ int i;

i=f(fa,fb,2); printf(“%d\n”,i);

}

程序运行后的输出结果是

A) -4 B) 1 C) 4 D) 8

(12) 不合法的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[])

(13) 假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:

PROG ABCDEFGH IJKL,则输出结果为

A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH

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

{ while(--argc>0) printf(“%s”,argv[argc]);

printf(“\n”);

}

(14) 以下程序的输出结果是

A) 1 B) 2 C) 3 D) 4

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)); }

(15) 有如下程序

long fib(int n)

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

else return(2);

}

main0

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

该程序的输出结果是

A) 2 B) 4 C) 6 D) 8

(16) 若有以下说明和定义

fun(int *c){ }

main()

{ int (*a)()=fun,*b(),w[10],c;

}

在必要的赋值之后,对fun函数的正确调用语句是

A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);

(17) 下列程序执行后的输出结果是

A) hello B) hel C) hlo D) hlm

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");}

(18) 假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行: prg hello good后,程序的输出结果是

A) hello good B) hg C) hel D) hellogood

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

{ int i;

if(argc for(i=1;i}

(19) 以下程序的输出结果是

A) 5 4 3 2 1 B)0 1 2 3 4 5 C) 1 2 3 4 5 D) 5 4 3 2 1 0

main()

{ int w=5; fun(w); printf(“\n”);}

fun(int k)

{ if (k>0) fun(k-1);

printf(“%d”,k);

}

(20) 若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;

FILEL CHINA BEIJING SHANGHAI

程序的输出结果是

A) CHINA BEIJING SHANGHAI B) FILEL CHINA BEIJING

C) C B S D) F C B

main(int argc,char *argv[])

{ while(arge-->0)

{ ++argv;printf("%s ",*argv);}

}

(21) C语言规定,程序中各函数之间

A) 既允许直接递归调用也允许间接递归调用

B) 不允许直接递归调用也不允许间接递归调用

C) 允许直接递归调用不允许间接递归调用

D) 不允许直接递归调用允许间接递归调用  二、填空题:

(1)以下程序运行后的输出结果是 【1】 。

int f(int a[], int n)

{ if (n >= 1) return f(a, n-1)+a[n-1];

else return 0;

}

main()

{ int aa[5]={1,2,3,4,5}, s;

s=f(aa, 5); printf("%d\n", s);

}

(2) 下面程序的运行结果是:【2】

int f( int a[], int n)

{ if(n>1) return a[0]+f(&a[1],n-1);

else return a[0];

}

main ( )

{ int aa[3]={1,2,3},s;

s=f(&aa[0],3); printf(“%d\n”,s);

}

(3) 以下程序运行后的输出结果是 【3】

fun(int x)

{ if (x/2>0) fun(x/2);

printf("%d",x);

}

main()

{ fun (6); }

(4) 设函数findbig已定义为求3个数中的值。以下程序将利用函数指针调用findbig函数。请填空。

main()

{ int findbig(int,int,int);

int (*f)(),x,yz,z,big;

f=【4】;

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("bing=%d\n",big);

}

(5) 以下程序的输出结果是【5】 。

main()

{ int x=0;

sub(&x,8,1);

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

}

sub(int *a,int n,int k)

{ if(k<=n) sub(a,n/2,2*k);

*a+=k;

}

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

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;} }

main()

{ int x;

fun(6,&x); printf("%d\n",x); }

(7) 下面程序的输出是【7】 。

long fun5(int n)

{ long s;

if((n==1)||(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);}

main()

{ long x;

x=fun5(4);

printf("%ld\n",x);}

(8) 下面h函数的功能是计算如下数学函数H的值。请填空。

double fgh(double( *f)(double a)< double( *g)(double b),

double x, double y)

{ return(【8】 );}

double h(double a, double b)

return(fgh( sin,cos,a,b)*fgh( 【9】] )); }

(9) 请读程序:

#includemain( int argc, char *argv[])

{ int i;

printf( '%d\n", argc);

for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);

printf("\n");

}

若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行

abc file1 file2(表示回车)

程序执行后的输出结果是 【10】 。

(10) 下面程序的输出结果是 【11】 。

#include 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));}

(11) 下面程序的输出结果是 【12】 。

#include funa( int a, int b)

{ return a+b;}

funb( int a, int b)

{ return a-b;}

sub( int (*t)(), int x, int y)

{ return((*t)( x,y));}

main()

{ int x, (*p)();

p=funa;

x=sub(p,9,3);

x+=sub(funb, 8, 3);

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

}

(12) 设有如下程序:

#includemain(int argc, char *argv[ ])

{ while( --argc>0) printf("%s",argv[argc]);

printf("\n");

}

假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL ,则输出结果为 【13】 。

(13) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。

#include #define N 10

invert(int *s,int i,int j)

{ int t; if(imain()

{ int a[N],i;

for(i=0;iinvert(a,0,N-1);

for(i=0;iprintf("\n"); } 答案:

一、选择题:

1) B 2) A 3) A 4) B 5) C 6) D 7) A 8) A 9) B 10) D

11) C 12) C 13) D 14) A 15) B 16) B 17) C 18) B 19) B 20) A

21) A 22) 23) 24) 25) 26) 27) 28) 29) 30)

二、填空题:

(1)15 (2)6 (3)1 3 6 (4)findbig (5)7 (6)8 (7)9 (8)f(xy)/g(y-x)或(*f)(x+y)/g(y-x)或f(x+y)/(*g)(y_x)或(*f)或(*f)(x+y)/(*g)(y-x) (9)cos,sin,a,b (10)3 abc.exe file1 file2 (注:两个答案,每个1分) (11)7 (12)17 (13)IJKLEFGHABCD (14)i+1 (15)I

二级C语言教程章节测试11.对函数的进一步讨论.doc

下载Word文档到电脑,方便收藏和打印[全文共6033字]

编辑推荐:

下载Word文档

c语言return 11,二级C语言教程章节测试11.对函数的进一步讨论相关推荐

  1. c语言如何存储已编译内容,二级C语言教程章节测试13.编译预处理和动态存储分配...

    一.选择题 (1)有以下程序 main() { char p[]={'a', 'b', 'c'}, q[]="abc"; printf("%d %d\n", s ...

  2. c语言第一章节测试,计算机二级C语言教程章节测试:字符串

    计算机二级C语言教程章节测试:字符串 (61) 函数调用:strcat(strcpy(str1,str2),str3)的功能是 A) 将串str1复制到串str2中后再连接到串str3之后 B) 将串 ...

  3. 2017安徽二级c语言,2017计算机二级C语言测试题及答案

    2017计算机二级C语言测试题及答案 此题 首先为整型变量赋初值x1=1,x2=2 表达式1为i=1,表达式2(循环条件)为i<=N即i<=4,表达式3为i++ 循环变量初值i为1,循环条 ...

  4. 南开大学c语言试题,南开大学二级C语言试题库,共71页

    内容简介: 南开大学二级C语言试题库,共71页 1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx.请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用 ...

  5. 二级 c语言 资料,计算机二级C语言复习资料

    计算机二级考试几天之后就要开始了,yjbys小编来带你对C语言基本知识点再做一遍盘点吧! [考点1]C程序 C语言程序结构有三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 swi ...

  6. 计算机二级系统班C语言讲义,计算机二级C语言2017辅导讲义:C语言基本知识

    计算机二级考试就要开始咯,赶快复习起来吧,出国留学网竭尽全力为各位同学准备了"计算机二级C语言2017辅导讲义:C语言基本知识",希望对各位考生有帮助. C语言基本知识 [考点1] ...

  7. 二级c语言手机版软件下载,二级C语言下载_二级C语言APP手机最新版安装 - 风云下载...

    二级C语言APP是一款关于学习的软件,它能够让大家进行更好的学习,还能够让大家随时的掌握各种考试的试题,了解关于考试的内容,进行更好的操作.这款软件还能够进行模拟的考试,之后还能够进行考试的查询,有了 ...

  8. 计算机二级考试c语言冲刺,计算机二级C语言考试冲刺练习题

    计算机二级C语言考试冲刺练习题 C语言是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元.下面给大家整理了计算机二级C语言考试冲刺练习题,欢迎阅读! 计算机二级C语言考试冲刺练习题 1. ...

  9. 计算机二级c语言预测,计算机二级C语言考前预测上机试题及解析

    计算机二级C语言考前预测上机试题及解析 2017年3月计算机等级考试即将到来,应届毕业生考试网为大家整理了2017年计算机二级考试C语言考前预测上机试题,希望对各位考生有所帮助! 一.程序填空题 请补 ...

最新文章

  1. 强化学习之gym初战实战案例:悬崖案例CliffWalking-v0。
  2. 编程语言可分为三大类
  3. 什么是51%算力攻击?——区块链系列学习笔记
  4. Navicat 提示 Access violation at address ***(771B7870) in module ‘ntdll.dll’. Read of address ***(220A
  5. [vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解
  6. [Leedcode][JAVA][第892题][图形题]
  7. 新版本idea的run/debug configuration
  8. su oracle c expdp,expdp/impdp 数据泵导入导出
  9. 怎么把好几行弄成一行_我在git merge的时候遇到了冲突,怎么解决?
  10. 移动办公之路的行业探索
  11. 思科华为命令没有对比就没有伤害
  12. 【数据结构C++】哈希表(三)
  13. 【PostgresSQL】对汉字按拼音排序
  14. 数据结构与算法——赫夫曼树基本实现
  15. 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》...
  16. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.7 高阶组件...
  17. Python安装wheel文件
  18. GETWA_NOT_ASSIGNED
  19. 金融学-风险中性测度
  20. Mysql 全外连接的实现

热门文章

  1. 带你了解加速度传感器的几种应用
  2. 分布式调用技术 RPC VS REST
  3. 前端知识点总结—-响应式
  4. 登录环境故障的原理及解决办法? -bash-4.1$ -bash-4.1$
  5. Excel信息提取之二
  6. linux内核自旋锁API
  7. Drupal8系列(五):主题制作之搭建框架-Ubuntu 14.04 LTS
  8. boost::asio::ip::tcp::resolver::query定义不正确导致boost::asio::ip::tcp::resolver的resolve抛出异常...
  9. 工作流编程循序渐进(3:While活动)
  10. SQL server 2005服务器备份文件的强制还原后引起的孤立用户问题解决方法