《第7章习题答案.pdf》由会员分享,可在线阅读,更多相关《第7章习题答案.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章 习题 一、选择题(*号题选做)(1)若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数值,以下选项中错误的程序是 A A)main()B)float fun(int a,int b)x=fun(2,10);main()float fun(int a,int b)x=fun(i,j);C)float fun(int,int);D)main()main()float fun(int i,int j);x=fun(2,10);x=fun(i,j);float fun(int a,int b)float fun(int a,int b)*(2)已定义以下函数 i
2、nt fun(int*p)return*p;fun 函数返回值是 B A)不确定的值 B)一个整数 C)形参 p 中存放的值 D)形参 p 的地址值*(3)若有以下函数首部。int fun(double x10,int*n)则下面针对此函数的函数声明语句中正确的是()。D A)int fun(double x,int*n);B)int fun(double,int);C)int fun(double*x,int n);D)int fun(double*,int*);(4)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 D A)函数的实参和其对应的形参共占同一存储单元 B)形
3、参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元(5)下面的函数调用语句中 func 函数的是实参个数是 ()A func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);A)3 B)4 C)5 D)8(6)以下叙述中错误的是()B A)用户定义的函数中可以没有 return 语句 B)用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值 C)用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型 D)函数的 return 语句中可以没有表达式(7)以下
4、关于 return 语句的叙述中正确的是 B A)一个自定义函数中必须有一条 return 语句 B)一个自定义函数中可以根据不同情况设置多条 return 语句 C)定义成 viod 类型的函数中可以有带返回值的 return 语句 D)没有 return 语句的自定义函数在执行结束时不能返回到调用处(8)有以下程序 int fun1(double a)return a*=a;int fun2(double x,double y)double a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);main()double w;w=fun2(1.1,2.0)
5、;程序执行后变量 w 中的值是 C A)5.21 B)5 C)5.0 D)0.0 (9)有以下程序:fun(int x,int y)return(x+y);main()int a=1,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(%dn,sum);执行后的输出结果是()。C A)6 B)7 C)8 D)9(10)有以下程序:void fun2(char a,char b)printf(%c,%c,a,b);char a=A,b=B;void fun1()a=C;b=D;main()fun1();printf(%c%c,a,b);fun2(E,F);程序的运
6、行结果是()。A A)CDEF B)ABEF C)ABCD D)CDAB*(11)有以下程序 main(int argc,char*argv)int n=0,i;for(i=1;iargc;i+)n=n*10+*argvi-0;printf(“%dn”,n);编译连接后生成可执行文件 tt.exe,若运行时输入以下命令行 tt 12 345 678 程序运行后的输出结果是 D A)12 B)12345 C)12345678 D)136(12)有如下程序:#include void fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5
7、,6,7,8,9,0,i;for(i=0;k10;i+=2)fun(ci,ci+1);for(i=0;k10;i+)printf(%d,ci);printf(n);程序的运行结果是 A A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,(13)有以下程序#include int f(int x,int y)return(y-x)*x);main()int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(%dn,d);程序运行后的输出结果是
8、B A)10 B)9 C)8 D)7(14)有以下程序#include int fun(int x,int y)if(x=y)return(x);else return(x+y)/2);main()int a=4,b=5,c=6;printf(%dn,fun(2*a,fun(b,c);程序运行后的输出结果是 B A)3 B)6 C)8 D)12(15)有以下程序#include void fun(int p)int d=2;p=d+;printf(%d,p);main()int a=1;fun(a);printf(%dn,a);程序运行后的输出结果是 C A)32 B)12 C)21 D)22
9、(16)有以下程序 includestdioh int f(int x);main()int n=1,m;m=f(f(f(n);printf(”%dn”,m);int f(int x)return x*2;程序运行后的输出结果是 D A)1 B)2 C)4 D)8(17)有以下程序 int fun(int n)if(n=1)return 1;else return(n+fun(n-1);main()int x;scanf(“%d”,&x);x=fun(x);printf(“%dn”,x);程序执行时,给变量 x 输入 10,程序的输出结果是 A A)55 B)54 C)65 D)45(18)有
10、以下程序:fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(%dn,fun(7);执行后的输出结果是()。C A)7 B)3 C)2 D)0(19)有以下程序#include int f(int x)int y;if(x=0|x=1)return(3);y=x*x-f(x-2);return y;main()int z;z=f(3);printf(“%dn”,z);程序的运行结果是 C A)0 B)9 C)6 D)8 (20)有以下程序#include int fun(int a,int b)if(b
11、=0)return a;else return(fun(-a,-b);main()printf(“%dn”,fun(4,2);程序的运行结果是 B A)1 B)2 C)3 D)4(21)有以下程序#include int f(int t ,int n);main()int a4=1,2,3,4,s;s=fa,4;printf(%dn,s);int f(int t,int n)if(n0)return tn-1+f(t,n-1);else return 0;程序运行后的输出结果是 B A)4 B)10 C)14 D)6(22)有以下程序 includestdioh void fun(int x)
12、if(x21)fun(x2);printf(”d”,x);main()fun(7);printf(”n”);程序运行后的输出结果是 D A)1 3 7 B)7 3 1 C)7 3 D)3 7(23)有以下程序 int fun(int x,int n)static int sum=0,i;for(i=0;i sum+=xi;return sum;main()int a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4);printf(“%dn”,s);程序执行后的输出结果是 C A)45 B)50 C)60 D)55 (24)有以下程序:fun(int x,i
13、nt y)static int m=0,i=2;i+=m+1;m=i+x+y;return m;main()int j=1,m=1,k;k=fun(j,m);printf(%d,k);k=fun(j,m);printf(%dn,k);执行后的输出结果是()。B A)5,5 B)5,11 C)11,11 D)11,5(25)有以下程序 int a=4;int f(int n)int t=0;static int a=5;if(n%2)int a=6;t+=a+;else int a=7;t+=a+;return t+a+;main()int s=a,i=0;for(;i2;i+)s+=f(i);
14、printf(“%dn”,s);程序运行后的输出结果是 B A)24 B)28 C)32 D)36(26)设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应该选择的存储类别是C A)auto B)register C)static D)auto 或 register(27)有以下程序#include int f(int n);main()int a=3,s;s=f(a);s=s+f(a);printf(%dn,s);int f(int n)static int a=1;n+=a+;return n;程序运行后的输出结果是 C A)7 B)8 C)9 D)10(28)有以下程序#i
15、nclude int fun()static int x=1;x*=2;return x;main()int i,s=1;for(i=1;i=2;i+)s=fun();printf(%dn,s);程序运行后的输出结果是 C A)0 B)1 C)4 D)8(29)有以下程序 includestdioh int fun()static int x=1;x+=1;return x;main()int i;s=1;for(i=1;i=5;i+)s+=fun();printf(”dn”,s);程序运行后的输出结果是 B A)11 B)21 C)6 D)120(30)有以下程序:#include#defi
16、ne N 5#define M N+1#define f(x)(x*M)main()int i1,i2;i1=f(2);i2=f(1+1);printf(%d%dn,i1,i2);程序的运行结果是()。B A)12 12 B)11 7 C)11 11 D)12 7(31)若程序中有宏定义行:#define N 100 则以下叙述中正确的是 B A)宏定义行中定义了标识符 N 的值为整数 100 B)在编译程序对 C 源程序进行预处理时用 100 替换标识符 N C)对 C 源程序进行编译时用 100 替换标识符 N D)在运行时用 100 替换标识符 N(32)以下叙述中错误的是 D A)在程
17、序中凡是以“”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行 D)C 程序对预处理命令行的处理是在程序执行的过程中进行的 (33)以下关于宏的叙述中正确的是()C A)宏名必须用大写字母表示 B)宏定义必须位于源程序中所有语句之前 C)宏替换没有数据类型限制 D)宏调用比函数调用耗费时间(34)有以下程序#include#define PT 3.5;#define S(x)PT*x*x;main()int a=1,b=2;printf(%4.1fn,S(a+b);程序运行后的输出结果是 C A)14.0 B)31.5 C
18、)7.5 D)程序有错无输出结果(35)有以下程序#include#define f(x)x*x*x main()int a=3,s,t;s=f(a+1);t=f(a+1);printf(%d,%dn,s,t);程序运行后的输出结果是 A A)10,64 B)10,10 C)64,10 D)64,64(36)以下程序#include#define SUB(a)(a)-(a)main()int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(%dn,d);程序运行后的结果是 C A)0 B)-12 C)-20 D)10 二 填空题(1)以下 isprime 函数的功能是判断形
19、参 a 是否为素数,是素数,函数返回 1,否则返回 0,请填空 int isprime(int a)int i;for(i=2;i=a/2;i+)if(a%i=0)_15_;/return 0 _16_;/return 1 (2)以下程序中,函数 fun 的功能是计算 x2-2x+6,主函数中将调用 fun 函数计算:y1=(x+8)2-2(x+8)+6 y2=sin2(x)-2sin(x)+6 请填空。#include math.h double fun(double x)return(x*x-2*x+6);main()double x,y1,y2;printf(Enter x:);scan
20、f(%lf,&x);y1=fun(【11】);/x+8 y2=fun(【12】);/sin(x)printf(y1=%lf,y2=%lfn,y1,y2);(3)以下程序中函数 f 的功能是在数组 x 的 n 个数(假定 n 个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.#include viod f(int x,int n)int p0,p1,i,j,t,m;i=j=x0;p0=p1=0;for(m=0;mi)i=xm;p0=m;else if(xmj)j=xm;p1=m;t=xp0;xp0=xn-1;xn-1=t;t=xp1;xp1=_14
21、_;_15_=t;/x0,x0 main()int a10,u;for(u=0;u10;u+)scanf(%d,&au);f(a,10);for(u=0;u10;u+)printf(%d,au);printf(n);(4)请将以下程序中的函数声明语句补充完整。#include int【12】;/max(int,int)main()int x,y,(*p)();scanf(%d%d,&x,&y);p=max;printf(%dn,(*p)(x,y);int max(int a,int b)return(ab?a:b);(5)以下 fun 函数的功能是:找出具有 N 个元素的一维数组中的最小值,并
22、作为函数值返回。请填空。(设 N 已定义)i int fun(int xN)int i,k=0;for(i=0;iN;i+)if(xixk)k=【10】;return xk;(6)以下 fun 函数的功能是在 N 行 M 列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设 M,.N 已定义)arowcol int fun(int aNM)int i,j,row=0,col=0;for(i=0;iN;i+)for(j=0;j=2)m=fun(t,n-1);return m;main()int a=11,4,6,3,8,2,3,5,9,2;printf(“%dn”,fun(a,10);
23、(8)下面程序的运行结果是【17】。18#include int f(int a,int n)if(n1)return a0+f(a+1,n-1);else return a0;main()int aa10=1,2,3,4,5,6,7,8,9,10,s;s=f(aa+2,4);printf(%dn,s);(9)以下程序的输出结果是【13】。1 3#include void fun(int x)if(x/20)fun(x/2);printf(“%d”,x);main()fun(3);printf(“n”);(10)以下程序的功能是:通过函数 func 输入 字符并统计输入字符的个数。输入时用字符
24、作为输入标志。请填空。#include long【14】;main()long n;n=func();printf(n=%ldn,n);long func()long m;for(m=0;getchar()!=;【15】);return m;答案:func();m+(11)有以下程序#include fun(int x)if(x/20)fun(x/2);printf(%d,x);main()fun(6);printf(n);程序运行后的输出结果是【15】1 3 6(12)以下程序的运行结果是 m=4 k=4 i=5 k=5。int k=0;void fun(int m)m+=k;k+=m;pr
25、intf(“m=%dn k=%d”,m,k+);main()int i=4;fun(i+);printf(“i=%d k=%dn”,i,k);(13)以下程序的输出结果是【11】。#include#define N 5 int fun(int x)static int t=0;return(t+=x);main()int s,i;for(i=1;i=5;i+)s=fun(i);printf(%dn,s);答案:15?(14)有以下程序#include int a=5;void fun(int b)int a=10;a+=b;printf(%d,a);main()int c=20;fun(c);
26、a+=c;printf(%dn,a);程序运行后的输出结果是【11】3025(15)下面程序由两个源文件 t4.h 和 t4.c 组成,程序编译运行的结果是【18】。16 11 t4.h 的源程序为:#define N 10#define f2(x)(x*N)t4.c 的源程序为:#include#define M 8#define f(x)(x)*M)#include t4.h main()int i,j;i=f(1+1);j=f2(1+1);printf(%d%dn,i,j);(16)以下程序的输出结果是_19_.55#include#define M 5#define N M+M mai
27、n()int k;k=N*N*5;printf(%dn,k);古今名言 敏而好学,不耻下问孔子 业精于勤,荒于嬉;行成于思,毁于随韩愈 兴于诗,立于礼,成于乐孔子 己所不欲,勿施于人孔子 读书破万卷,下笔如有神杜甫 读书有三到,谓心到,眼到,口到朱熹 立身以立学为先,立学以读书为本欧阳修 读万卷书,行万里路刘彝 黑发不知勤学早,白首方悔读书迟颜真卿 书卷多情似故人,晨昏忧乐每相亲于谦 书犹药也,善读之可以医愚刘向 莫等闲,白了少年头,空悲切岳飞 发奋识遍天下字,立志读尽人间书苏轼 鸟欲高飞先振翅,人求上进先读书李苦禅 立志宜思真品格,读书须尽苦功夫阮元 非淡泊无以明志,非宁静无以致远诸葛亮 熟读唐诗三百首,不会作诗也会吟孙洙唐诗三百首序 书到用时方恨少,事非经过不知难陆游 问渠那得清如许,为有源头活水来朱熹 旧书不厌百回读,熟读精思子自知苏轼 书痴者文必工,艺痴者技必良蒲松龄 声明 访问者可将本资料提供的内容用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本文档及相关权利人的合法权利。谢谢合作!