第七章和第八章习题.docx

上传人:b****1 文档编号:10942145 上传时间:2023-05-28 格式:DOCX 页数:16 大小:20.32KB
下载 相关 举报
第七章和第八章习题.docx_第1页
第1页 / 共16页
第七章和第八章习题.docx_第2页
第2页 / 共16页
第七章和第八章习题.docx_第3页
第3页 / 共16页
第七章和第八章习题.docx_第4页
第4页 / 共16页
第七章和第八章习题.docx_第5页
第5页 / 共16页
第七章和第八章习题.docx_第6页
第6页 / 共16页
第七章和第八章习题.docx_第7页
第7页 / 共16页
第七章和第八章习题.docx_第8页
第8页 / 共16页
第七章和第八章习题.docx_第9页
第9页 / 共16页
第七章和第八章习题.docx_第10页
第10页 / 共16页
第七章和第八章习题.docx_第11页
第11页 / 共16页
第七章和第八章习题.docx_第12页
第12页 / 共16页
第七章和第八章习题.docx_第13页
第13页 / 共16页
第七章和第八章习题.docx_第14页
第14页 / 共16页
第七章和第八章习题.docx_第15页
第15页 / 共16页
第七章和第八章习题.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第七章和第八章习题.docx

《第七章和第八章习题.docx》由会员分享,可在线阅读,更多相关《第七章和第八章习题.docx(16页珍藏版)》请在冰点文库上搜索。

第七章和第八章习题.docx

第七章和第八章习题

习题(函数和指针)

一、选择题

1.若有”fun(inta[],intn)”,以下说法正确的是()。

A.函数的类型为单精度类型

B.第一个实参应该是数组名

C.实参和形参之间是一个值传递的过程

D.以上说法都不对

2.下列有关函数调用的说法不正确的是()。

A.若用值传递方式,则形式参数在函数被调用时才分配内存

B.实际参数和形式参数不可以同名

C.主调函数和被调用函数可以不在同一个文件中

D.函数间传送数据可以使用外部全局变量

3.下列叙述中正确的是()。

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

B.函数可以嵌套调用,也可以嵌套定义

C.函数不可以嵌套定义,也不可以递归调用

D.函数可以嵌套调用,但不能嵌套定义

4.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

5.函数中未指定存储类型的变量,其隐含的存储类型是()。

A.staticB.autoC.externD.register

6.在一个C语言源程序文件中所定义的全局变量,其作用域为:

A.所在文件的全部范围B.所在程序的全部范围

C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

7.所谓静态存储即是在程序运行期间分配固定的()。

A.变量名称B.变量值C.存储单元D.作用域

8.以下只有在使用时才为该类型变量分配内存的存储类型是()。

A.auto和staticB.auto和register

C.register和staticD.extern和register

9.设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是()。

A.autoB.registerC.staticD.auto或register

10.若变量定义时未初始化,则其值不确定的是()。

A.静态全局变量 B.静态局部变量 C.局部变量 D.全局变量

11.以下叙述中错误的是()。

A.用户定义的函数中可以没有return语句

B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C.用户定义的函数中若没有return语句,则应当定义函数为void类型

D.函数的return语句中可以没有表达式

12.下列关于指针定义的描述中不正确的是()。

A.指针变量是一种变量,该变量是用来存放某个变量的地址值的

B.指针变量的类型与它所指向的变量类型一致

C.指针变量的命名规则与标识符相同

D.在定义指针时,”*”号表示指针变量的指向

13.若有说明语句:

double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;scanf(“%lf”,p);B.*p=&a;scanf(“%f”,p);

C.p=&a;scanf(“%lf”,*p);D.p=&a;scanf(“%lf”,p);

14.以下叙述中错误的是()。

A.改变函数形参的值,不会改变对应实参的值B.函数可以返回地址值C.可以给指针变量赋一个整数作为地址值

D.当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL

15.下列程序的运行结果是()。

#include"stdio.h"

intf(inta)

{switch(a)

{case0:

return0;

case1:

case2:

return1;

}

return(f(a-2)+f(a-3));

}

main()

{intb;

b=f(9);

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

}

A.10 B.7 C.8 D.9

16.以下程序的输出结果是()。

intf(intb[],intm,intn)

{inti,s=1;

for(i=m;i

{b[i]=b[i-1]+b[i+1];s+=b[i];}

returns;}

main()

{intx,a[]={1,2,3,4,5,6,7,8,9,10};

x=f(a,3,5);

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

A.23 B.26 C.42 D.35

17.下列程序的输出结果是()。

#include"stdio.h"

intf(intn)

{staticintk,s;

n--;

for(k=n;k>0;k--)

s+=k;

returns;

}

main()

{intk;

k=f

(2);

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

}

A.(3,3) B.(1,1) C.(3,6) D.(6,12)

18.函数f定义如下,执行语句”m=f(5);”后,m的值应为()。

intf(intk)

{if(k==0||k==1)return1;

elsereturnf(k-1)+f(k-2);

}

A.3 B.8 C.5 D.13

19.下列程序段的输出结果是()。

intc[]={1,7,12};

int*k=c+1;

printf("%d",*k++);

A.2B.7C.8D.12

20.下列程序的运行结果是()。

main()

{inta=4,y;

y=fun(a,++a);

printf(“%d”,y);

}

intfun(intx,intc)

{intb;

if(x

elseif(x==c)b=0;

elseb=-1;

return(b);

}

A.4 B.-1 C.1 D.0

21.下列程序的输出结果是()。

intf()

{staticinti=0;

ints=1;

s+=i;i++;

returns;}

main()

{inti,a=0;

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

a+=f();

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

}

A.21 B.24 C.25 D.15

22.若有如下程序:

voids(char*m,intn)

{

*m=*m+3;n=n+3;

printf("%c,%c,",*m,n);

}

main()

{

charp=’b’,q=’B’;

s(&q,p);

printf("%c,%c\n",p,q);

}

则程序运行后的输出结果是()。

A.E,e,b,E B.e,E,b,F C.E,e,e,E D.e,E,b,E

23.函数f定义如下,执行语句”sum=f(4)+f

(2);”后,sum的值应为()。

intf(intm)

{staticinti=0;ints=0;

for(;i<=m;i++)s+=i;returns;

}

A.13 B.16 C.10 D.8

24.若有以下调用语句,则不正确的fun函数的首部为()。

main()

{…

inta[50],n;

fun(n,&a[9]);

}

A.voidfun(intm,intx[]) B.voidfun(ints,inth[41])

C.voidfun(intp,int*s) D.voidfun(intn,inta)

25.有以下程序

#include

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

main()

{intz;

z=f(3);printf("%d\n",z);

}

程序的运行结果是

A.0B.9C.6D.8

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

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf("%d\n",b[0]);}

A.6B.7C.8D.9

27.有以下程序

#include

voidfun(intp)

{intd=2;

p=d++;printf(“%d”,p);}

main()

{inta=1;

fun(a);printf(“%d\n”,a);}程序运行后的输出结果是

A.32B.12C.21D.22

28.有以下程序

#include

voidfun(int*a,int*b)

{int*c;

c=a;a=b;b=c;}

main()

{intx=3,y=5,*p=&x,*q=&y;

fun(p,q);printf(“%d,%d,”,*p,*q);

fun(&x,&y);printf(“%d,%d\n”,*p,*q);}程序运行后的输出结果是

A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3

29.有以下程序

#include

voidf(int*p,int*q);

main()

{intm=1,n=2,*r=&m;

f(r,&n);

printf(“%d,%d”,m,n);}

voidf(int*p,int*q)

{p=p+1;*q=*q+1;}

程序运行后输出的结果是

A.1,3B.2,3C.1,4D.1,2

30.以下函数按每行8个输出数组中的数据

voidfun(int*w,intn)

{inti;

for(i=0;i

{_________________

printf(“%d”,w);}

printf(“\n”);}下划线处应填入的语句是

A.if(i/8==0)printf(“\n”);B.if(i/8==0)continue;

C.if(i%8==0)printf(“\n”);D.if(i%8==0)continue;

31.有以下程序

#include

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);}

main()

{inta=4,b=5,c=6;

printf(“%d\n”,fun(2*a,fun(b,c)));}程序运行后的输出结果是

A.3B.6C.8D.12

32.有以下程序

#include

voidfun(inta[],intn)

{inti,t;

for(i=0;i

}

main()

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

fun(k,5);

for(i=2;i<8;i++)printf("%d",k[i]);

printf("\n");

}程序的运行结果是()。

A.345678B.876543C.1098765D.321678

33.有以下程序

#include

intfun(chars[])

{intn=0;

while(*s<=’9’&&*s>=’0’){n=10*n+*s-’0’;s++;}

return(n);}

main()

{chars[10]={‘6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};

printf("%d\n",fun(s));}程序运行的结果是()。

A.9B.61490C.61D.5

34.已定义以下函数

intfun(int*p)

{return*p;}fun函数返回值是()。

A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值

二、填空题

1.求字符串长度的标准库函数是。

2.从函数的形式看,函数分为__________和无参函数,从用户使用的角度看,函数分为________和用户自定义函数。

3.已知inta[4]={1,3,5,7},*q;q=a;,则*(q+1)的值为_____,*q+1的值为_____.

4.根据变量存储方式的不同,变量共有auto、______、_______和________四种类型。

5.静态局部变量在_________时被赋初值,并且如果在定义静态局部变量时不赋初值的话,则它的值为_______。

6.形式参数简称_____,实际参数简称______。

根据形成参数的不同,实际参数传给形式参数可以分为_________和地址传递两类。

7.已知函数fun()存在,并且有调用表达式fun(a,(a,b)),则可以判断出此函数有_______个形式参数。

8.指针变量是用于存放的变量。

9.已知doublea=9;请定义一个指针p,并指向变量a,要求用一条语句实现:

____________________.

10.已知inta[]={2,4,6,8,9,7,8,9},*p=a+2;则p++执行后,p指向数组a的第____个元素。

三、程序分析题

1.以下程序的输出结果是:

_________。

floatfun(intx,inty)

{

return(x+y);

}

main()

{inta=2,b=5,c=8;

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

}

2.以下程序的运行结果是__________。

#include"stdio.h"

inta=3,b=6;

main()

{inta=4,c;

c=plus(a,b);

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

}

plus(intx,inty)

{intz;

z=x+y;

return(z);}

3.以下程序的运行结果是__________。

#include"stdio.h"

#include"string.h"

main()

{charstr1[20]={"WO"},str2[20]={"ABC"};

strcpy(str1,str2);

printf("%s",str1);

}

4.以下程序运行后的输出结果是_________。

intx;

main()

{x=5;

cube();

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

}

cube()

{x=x*x*x;}

5.有以下程序

#include

inta=5;

voidfun(intb)

{inta=10;

a+=b;

printf(“%d”,a);

}

main()

{intc=20;

fun(c);

a+=c;

printf(“%d\n”,a);}程序运行后的输出结果是________。

6.有以下程序

#include

fun(intx)

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

printf(“%d“,x);

}

main()

{fun(6);printf(“\n”);}程序运行后的输出结果是________。

7.以下程序运行后的输出结果是_____________________。

#include

intmain()

{inta,b;

int*p,*q;

p=&a;q=&b;

*p=3;*q=a+*p;

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

return0;

}

8.以下程序运行后的输出结果是_____________________。

#include

voidfun(double*x,double*y)

{double*t;

t=x;

x=y;

y=t;}

intmain()

{doublea=9.8,b=7.5;

fun(&a,&b);

printf("%.1f,%.1f\n",a,b);

return0;

}

9.以下程序运行后的输出结果是_____________________。

#include

voidfun(doublex,doubley)

{doublet;

t=x;x=y;y=t;

}

intmain()

{doublea=6.3,b=5.7;

fun(a,b);

printf("%.1f,%.1f\n",a,b);

return0;

}

四、程序填空题

1.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex)

{return(x*x-2*x+6);}

main()

{doublex,y1,y2;printf("Enterx:

");scanf("%lf",&x);

y1=fun(______);y2=fun(________);

printf("y1=%lf,y2=%lf\n",y1,y2);}

2.以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空

intisprime(inta)

{inti;

for(i=2;i<=a/2;i++)

if(a%i==0);

;

}

五、编程题

1.编写一个函数,求三个数的最大值。

函数头部为:

doublefun(doublex,doubley,doublez)

2.编写一个函数求1+2+3+……n

函数头部为:

intfun(intn)

3.编写一个函数,求一个5×5整型矩阵的两条对角线元素之和。

函数头部为doublefun(doublea[5][5])

4.编写一个函数,交换两个数的值,要求用指针实现。

函数头部为:

voidfun(int*x,int*y)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2