文档库 最新最全的文档下载
当前位置:文档库 › C语言练习题第七章

C语言练习题第七章

第七章 常见题型
一.选择题:
1.C语言标准库函数"fgets(string,n,fp)"的功能是________。
A.从文件fp中读取长度为n的字符串存入指针string指向的内存
B.从文件fp中读取长度为n-1的字符串存入指针string指向的内存
C.从文件fp中读取n个字符串存入指针string指向的内存
D.从文件fp中读取长度不超过长度为n的字符串存入指针string指向的内存
2.参考下面函数f的定义:
f(int a){printf("%d",a);}
函数f的返回类型________。
A.同参数a的类型相同
B.是void类型
C.没有返回值
D.无法确定
3.函数NewPring用于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPring的原型为________。

A.double NewPrint(double x)
B.void NewPrint(double(*f)(double X))
C.void (*NewPrint)(double X)
D.void (*NewPrint)(double f(double x))
4.数组名作为参数传递给函数,此时作为实在参数的数组名被处理为________。
A.该数组的长度
B.该数组的元素个数
C.该数组中各元素的值
D.该数组的首地址
5.执行完下面的程序段后,屏幕显示的内容为何。
main()
{
int a=2,i;
for(i=0;i<3;i++) printf("%d",f(a));
}
f(a)
int a;
{
int b=0;
static c=3;
b++;
c++;
return(a+b+c);
}
A.777
B.7 7 7
C.789
D.7 8 9
6.C程序中若函数类型未加显式说明,则函数的隐含类型为________类型。
A.void
B.int
C.char
D.double
7.对于C程序的函数,下列叙述中正确的是________。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可嵌套,但函数的调用不能嵌套
C.函数的定义和调用均不能嵌套
D.函数的定义和调用均可嵌套
8.C语言命令行参数很有特点,其一般表达式形式为________。
A.main(int argc,int argv)
B.main(int argc,char argv[])
C.main(int argc,char *argv)
D.main(int argc,char *argv[])
9.以下描述中,正确的是________。
A.调用函数时,实参可以是表达式
B.调用函数时,将为形参分配内存单元
C.调用函数时,实参与形参的原型必须一致
D.调用函数时,实参与形参可以用内存单元
10.以下函数调用中有几个实参。
expd((a1,a2,a3),(a4,a5),a7,a8)
A.4个
B.3个
C.8个
D.5个
11.C语言中函数能否嵌套调用和递归调用?
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
12.C语言标准库函数"strcat(strcpy(STR1,STR2),STR3)"的功能是________。
A.将串STR1复制到串STR2中后再连接至串STR3之后
B.将串STR1连接至STR2之后再复制至串STR3之后
C.将串STR2复制到串STR1串后再将串STR3连接到串STR1 之后
D.将串STR2连接到串STR1之后再将串STR1复制到串STR3串
13.下列选项中不是C语言main函数正确表达形式的是________?
A.main(int argc,char *argv[]);
B.main(ac,av) int ac;char **av;
C.main(c,v) int c;char *v[];
D.main(argc,argv

) int argc;char argv[];
二.填空题:
1.填入运行结果:
swap1(x,y)
int x,y;
{
int w;
w=x;x=y;y=w;
}

swap2(p1,p2)
int *p1,*p2;
{
int *p;
p=p1;p1=p2;p2=p;
}

swap3(pa,pb)
int *pa,*pb;
{
int p;
p=*pa;pa=*pb;pb=p;
}

main()
{
int a,b;
int *ptr1,*ptr2;
a=5;b=7;
ptr1=&a;ptr2=&b;
swap1(*ptr1,*ptr2);
printf("data1=%d\tdata2=%d\n",*ptr1,*ptr2);
swap2(ptr1,ptr2);
printf("data3=%d\tdata4=%d\n",*ptr1,*ptr2);
printf("data5=%d\tdata6=%d\n",a,b);
swap3(ptr1,ptr2);
printf("data7=%d\tdata8=%d\n",*ptr1,*ptr2);
printf("data9=%d\tdata10=%d\n",a,b);
}
A.data1=5 data2=7
data3=5 data4=7
data5=5 data6=7
data7=7 data8=5
data9=7 data10=5

B.data1=7 data2=7
data3=7 data4=7
data5=7 data6=7
data7=7 data8=5
data9=7 data10=5
C.data1=5 data2=7
data3=5 data4=7
data5=5 data6=7
data7=7 data8=7
data9=7 data10=7
D.data1=5 data2=7
data3=5 data4=5
data5=5 data6=5
data7=7 data8=5
data9=7 data10=5
2.main()
{ int x=3,i;
for(i=0;i<3;i++) printf("%d",f(x));
}
int f(int a)
{ int b=0;
static c=3;
b++;c++;
return(a+b+c);
}
执行此程序后屏幕上显示的结果是什么:
A.8 10 10
B.7 9 10
C.8 9 11
D.8 9 10
3.#include
main()
{ int a,b,c,d;
scanf("%d%d",&a,&b);
c=gbs(a,b);
d=gys(a,b);
printf("a=%db=%d gbs=%d gys=%d\n",a,b,c,d);
}
gbs(a,b)
int a,b;
{ int c;
a=a>0?a:-a;
b=b>0?b:-b;
c=a*b;
if(c==0) return(0);
while(a!=b) if(a>b) a-=b;
else b-=a;
return(c/a);
}
gys(a,b)
int a,b;
{ if(a*b==0) return(0);
a=a>0?a:-a;
b=b>0?b:-b;
while(a!=b) if(a>b) a-=b;else b-=a;
return(a);
}
请写出上面程序的运行结果:
A.a=30 b=63 gbs=189 gys=9
B.a=27 b=63 gbs=190 gys=10
C.a=27 b=63 gbs=189 gys=9
D.a=27 b=63 gbs=188 gys=10
4.下面函数swap_p的功能是完成交换两个指针的操作。请 按指定的顺序在题后的相应序号后填上适当的内容,使之成为完整正确的函数。
swap_p(s,t)
int ________,________;
{ int *term;
term=________;*s=________;*t=________;
}
A.s(或t);
*t(或*s);
*s;
*t;
term;
B.**s(或**t);
**t(或**s);
*s;
*t;
term;

C.**s(或**t);
**t(或**s);
s;
t;
*term;
D.s(或**t);
t(或**s);
*s;
*t;
&term;
5.现有一C语言程序用于计算一个数学函数f(n):
fib(n)
int n;
{
switch(n){
case 0:return 0;
case 1:return 1;
default:
{
int i;
int a=0,b=1,result;
for(i=2;i<=n;i++)
{ result=a+b;
a=b;
b=result;
}
return result;
}
}
}
该数学函数的表达式是________。
A. 0 (n=1)
f(n)={ 1 (n=1)
f(n-1)+f(n-2) (n>0)
B. 0 (n=0)
f(n)={ 1 (n=0)
f(n-1)+f(n-2) (n>1)
C. 0 (n=0)
f(n)={ 1 (n=1)
f(n-1)+f(n-2) (n>1)

D. 0 (n<0)
f(n)={ 1 (n>0)
f(n-1)+f(n-2)

(n>1)
6.现给出如下C语言程序:
#include
shell(v,n)
int v[],n;
{
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2)
for(i=gap;ifor(j=i-gap;j!=0&&v[j]>v[j+gap];j-=gap)
{
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}
main()
{
int i,count;
static int a[]={9,7,10,0,-8,2};
count=sizeof(a)/sizeof(int);
shell(a,count);
for(i=0;iprintf("%d",a[i]);
}
(1)该程序的输出结果是________。
(2)将程序中shell(a,count)改为shell(a,count-1)输出结果是________。
A.(1)-8 0 2 7 9 10
(2)-8 0 7 9 10 2

B.(1)-8 1 2 7 9 10
(2)-8 1 7 9 10 2
C.(1)-8027910
(2)-8079102
D.(1)-8 0 3 7 9 10
(2)-8 0 4 9 10 2







答案
一.选择题:
1.B

2.A

3.C

4.D

5.C

6.B

7.A

8.D

9.D

10.A

11.D
12.C

13.D

二.填空题:
1.A

2.D

3.C

4.B

5.C

6.A

相关文档
相关文档 最新文档