新浪博客

《C语言程序设计》核心试题(10)

2011-09-13 23:23阅读:
第十一部分:对函数的进一步讨论
一、选择题
1)有以下程序
# include <string.h>
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',str);
}
程序运行后的输出结果是
  Aabcdefg
  Bgfedcba
  Cgbcdefa
  Dabedcfg
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',y1,y2);
}
程序运行后的输出结果是
  A8, 16
  B8, 8
  C16, 16
  D4, 8
(3)
程序中若有如下的说明和定义语句
char fun(char *);
main()
{
char *s='one',a[5]={0},(*f1)()=fun,ch;
……
}
以下选项中对函数fun的正确调用语句是
  A)(*f1(a);
  B*f1(*s);
  Cfun(&a);
  Dch=*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<j)
{ 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('-',x[i]);
printf('');
}
程序运行后的输出结果是
  A) 1 2 6 8
  B) 8 6 2 1
  C) 8 1 6 2
  D) 8 6 1 2
(6)
有以下程序
#include <string.h>
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf(“5d”,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<j)
{ 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(“”);
}
执行后输出结果是
  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<j)
{ 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”,j);
}
程序运行后的输出结果是
  A) 4
  B) 3
  C) 2
  D) 1
(10)
有以下程序
#include <string.h>
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;i<argc;i++) len+=strlen(argv[i]);
printf(“%d”,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”,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(i

我的更多文章

下载客户端阅读体验更佳

APP专享