C语言课后习题答案第八章.doc

上传人:s****u 文档编号:12766692 上传时间:2020-05-23 格式:DOC 页数:10 大小:86.50KB
返回 下载 相关 举报
C语言课后习题答案第八章.doc_第1页
第1页 / 共10页
C语言课后习题答案第八章.doc_第2页
第2页 / 共10页
C语言课后习题答案第八章.doc_第3页
第3页 / 共10页
点击查看更多>>
资源描述
作业八:函数程序设计答案(一)选择题(30分)1以下正确的函数定义形式是A_。A) double fun(int x,int y)B) double fun(int x;int y)C) double fun(int x,int y);D) double fun(int x,y);2以下正确的函数形式是D_。A) double fun(int x,int y) z=x+y; return z; B) fun(int x,y) int z; return z; C) fun(x,y) int x,y; double z; z=x+y; return z; D) double fun(int x,int y) double z; z=x+y; return z; (重要)3以下正确的说法是A_。在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元4若调用一个函数,且此函数中没有return语句,则正确的说法是D_。该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值(重要)5以下不正确的说法是B_。C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致6C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是B_。A) 地址传递B) 单向值传递C) 由实参传给形参,再由形参传回给实参D) 由用户指定传递方式7以下程序有语法性错误,有关错误原因的正确说法是C_。main()int G=5,k;void Prt_char(); k=Prt_char(G); A) 语句void prt_char();有错,它是函数调用语句,不能用void说明B) 变量名不能使用大写字母C) 函数说明和函数调用语句之间有矛盾D) 函数名不能使用下划线8C语言允许函数值类型缺省定义,此时该函数值隐含的类型是B_。A) float型B) int型C) long型D) double型9C语言规定,函数返回值的类型是由D_。A) return语句中的表达式类型所决定B) 调用该函数时的主调函数类型所决定C) 调用该函数时系统临时决定D) 在定义该函数时所指定的函数类型所决定10下面函数调用语句含有实参的个数为B_。func(exp1,exp2),(exp3,exp4,exp5);A)1B)2C)4D)5(重要)11以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。#include #include main()float x,y,z,sum;scanf(“%f %f %f”,&x,&y,&z);sum=f(【1】_B_)+f(【2】_C_);printf(“sum=%fn”,sum);float f(float a,float b)float value;value=a/b;return(value);【1】 A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y【2】 A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y12以下正确的描述是B_。在C语言程序中 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套13以下正确的说法是A_。如果在一个函数中的复合语句中定义了一个变量,则该变量A) 只在该复合语句中有效B) 在该函数中有效C) 在本程序范围内均有效D) 为非法变量14凡是函数中未指定存储类型的局部变量,其隐含的存储类别为A_。A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)15在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是D_。A)externB)registerC)autoD)static(二)填空题(50分) 1若输入的值是-125,以下程序的运行结果是-5*5*5_。#include main()int n;scanf(“%d”,&n);printf(“%d=”,n);if(n0) printf(“-”);n=fabs(n);fun(n);fun(int n)int k,r;for(k=2;k1) printf(“*”);r=n%k;if(n!=1) printf(“%dn”,n);2以下程序的运行结果是i=7;j=6;x=7i=2;j=7;x=5。main()int i=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%dn”,i,j,x);fun(int i,int j)int x=7;printf(“i=%d;j=%d;x=%dn”,i,j,x);3以下程序的运行结果是111_。main()increment();increment();increment();increment()int x=0;x+=1;printf(“%d”,x);4以下程序的运行结果是max is 2_。#include main()int a=1,b=2,c;c=max(a,b);printf(“max is %dn”,c);max(int x,int y)int z;z=(xy)?x:y;return(z);5以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“This is YES.”与“This is NO.”。请填空。#include void YesNo(char ch)switch(ch)case y:case Y: printf(“nThis is YES.n”); _break_;case n:case N: printf(“nThis is No.n”); _break_;main()char ch;printf(“nEnter a char y,Yorn,N:”);ch=getchar();printf(“ch:%c”,ch);YesNo(ch);6以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。sub(int k,int n)int a1,a2;a2=【1】_C_;a1=k-【2】_A_;if(k%3=0&a2=5)|(k%3=0&a1=5)printf(“%d”,k);n+;return n;else return -1;main()int n=0,k,m;for(k=10;k=99;k+)m=sub(k,n);if(m!=-1) n=m;printf(“nn=%d”,n);【1】 A)k*10B)k%10C)k/10D)k*10%10【2】 A)a2*10B)a2C)a2/10D)a2%107以下程序的功能是用二分法求方程的根,并要求绝对误差不超过0.001。请填空。#include float f(float x)return(2*x*x*x-4*x*x+3*x-6);main()float m=-100,n=90,r;r=(m+n)/2;while(f(r)*f(n)!=0)if(f(m)*f(r)0) m=r;else n=r;if(fabs(f(r)=0.001) break;r=(m+n)/2;printf(“The is fangcheng jie is %6.3fn”,r);8以下程序的功能是计算下面函数的值。请填空。#include #include float f(float,float,float);main()float x,y,z,sum;printf(“ninput x,y,z:n”);scanf(“%f %f %f”,&x,&y,&z);sum=f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y);printf(“sum=%fn”,sum);float f(float a,float b,float c)float value;value=sin(a)/(sin(b)*sin(c);return(value);9以下程序的运行结果是输出如下图形。请填空。 * * * * * * * * * * * * * * * * * * * * * * * *#include void a(int i)int j,k;for(j=0;j=5-i;j+) printf(“”);for(k=0;k2*i-1;k+) printf(“*”);printf(“n”);main()int i;for(i=0;i=0;i-) a(i);10以下程序的功能是用递归方法计算五位学生的年龄,请填空。递归公式如下:#include age(int n)int c;if(n=1) c=10;else c=age(n-1)+2;return(c);main()int n=5;printf(“age:%dn”,age(5);(三)编程题(20分)1用函数编程打印以下图案。 * * * * * * * *(1) (2) (3)Void f1(int n) int i; for(i=1;i=n;i+) printf(“ “);Void f2(int n) int i; for(i=1;i=n;i+) printf(“*“);(1)main() (2)main() (3)main() int i; int i; int i; f(i=1;i=4;i+) f(i=1;i=4;i+) f(i=1;i=4;i+) f1(4-i); f2(2*i-1); f1(4-i);f2(6); printf(“n”); f2(2*i-1);printf(“n”); printf(“n”); getch(); getch(); getch(); 2以下函数p的功能是用递归方法计算x的n阶勒让德多项式的值。已有调用语句p(n,x);请编写p函数。递归公式如下:float p(int n,int x)float p(int n,int x) if(n=0) return 1; else if(n=1) return x; else (2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n;3以下程序的功能是用牛顿法求解方程f(x)=cosx-x=0。已有初始值x0=3.1415/4,要求绝对误差不超过0.001,函数f用计算迭代公式中的值,请编写f函数。牛顿迭代公式是:即:#include #include #define PI 3.1415float f(float x0)main()int t=0,k=100,n=0;float x0=PI/4,x1;while(nk)x1=f(x0);if(fabs(x0-x1)0.001) t=1; break; else x0=x1; n=n+1; if(t=1) printf(“nFangcheng geng is %10.5f”,x1);else printf(“nSorry,not found!”);float f(float x0)return x0-(cos(x0)-x0)/(sin(x0)-1);4以下程序的功能是应用弦截法求方程的根,其中f函数可根据指定的x的值求出方程的值;函数xpoint可根据x1和x2求出f(x1)和f(x2)的连线与x轴的交点;函数root用来求区间(x1,x2)的实根,请编写root函数。#include float root(float x1,float x2)float f(float x) float xpoint(float x1,float x2)/* 略 */ main()float x1,x2,f1,f2,x;doprintf(“input x1,x2:n”);scanf(“%f %f”,&x1,&x2);printf(“x1=%5.2f,x2=%5.2fn”,x1,x2);f1=f(x1);f2=f(x2);while(f1*f2=0);x=root(x1,x2);printf(“A root of equation is %8.4f”,x);#include float root(float x1,float x2) float x;do x=x2-f(x2)*(x2-x1)/(f(x2)-f(x1);if(f(x)*f(x2)0) x1=x;else x2=x;while(fabs(f(x)1e-6);return x;float f(float x) return x*x*x-5*x*x+16*x-80;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!