ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:21.18KB ,
资源ID:11871337      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11871337.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(习题参考答案《C语言程序设计》第七版董汉丽 712页.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

习题参考答案《C语言程序设计》第七版董汉丽 712页.docx

1、习题参考答案C语言程序设计第七版董汉丽 712页一、简答题1.模块化程序设计思想和划分模块的基本原则是什么?【解答】模块化程序设计思想是把一个大的程序按功能进行分解,由于分解后的各模块较小,因此容易实现,也容易调试。划分模块的基本原则是:各模块都要易于理解,功能尽量单一,模块间的联系尽量少。满足这些要求的模块具有以下优点:(1)模块间的接口关系简单,这种程序可读性和可理解性较强。(2)需要修改某一功能时,只涉及到一个模块,不会影响到其它模块。(3)脱离程序的上、下文也能单独验证一个模块的正确性。 (4)扩充或建立新系统时,可充分利用已有的模块。2.一个C语言程序由几个函数组成?【解答】一个C语

2、言程序由一个或多个函数组成,其中必须有一个名为main的主函数。主函数调用其它函数,其它函数可以互相调用。3.函数调用的规则是什么?【解答】在一个函数中调用另一个函数必须具备的条件是:被调用的函数必须是已经存在的函数(库函数或用户自己定义的函数)。调用库函数时,通常在文件开头用#include命令将调用有关库函数时所需用的信息“包含”到本文件中来。如:标准输入输出库函数用#include ,数学库函数用#include 。调用自定义函数,而且该函数与调用它的函数在同一个文件中,应在主调函数中对被调函数作声明(说明函数类型、参数类型及个数),以便编译系统对函数调用进行语法检查。4.函数的“形参”

3、和“实参”的概念是什么?【解答】在定义函数时,函数名后面的括号中的变量称为“形式参数”,简称“形参”。在调用函数时,主调函数名后面括号中的参数(也可以是一个表达式)称为“实际参数”,简称“实参”。5.调用函数中,有几种方法可以返回1个或多个值?【解答】函数调用中可以利用return语句返回一个值。可以利用参数传递,全局变量得到多个返回值。6.在函数调用中,用指针变量作为函数的参数进行传递,好处在哪里?【解答】在函数调用中,用指针变量作为函数的参数,可以改变实参指针变量所指变量的值。二、运行程序写结果1下列程序的输出结果是 。fun(int x,int y,int z) z=x*x+y*y;ma

4、in( ) int a=31;fun(5,2,a);printf(%d,a);【解答】312以下程序运行后的输出结果是 。 f(int b ,int m,int n) int i,s=0; for(i=m;in;i=i+2) s=s+bi; return s; main( ) int x,a =1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf(%dn,x); 【解答】103下列程序运行的运行结果是 。#include void fun(char*c,int d) *c=*c+1;d=d+1; printf(%c,%c,*c,d);main() char b=a,a=A

5、; fun(&b,a); printf(%c,%cn,b,a);【解答】b,B,b,A4.下列程序运行的运行结果是 。void swap(int *a,int *b)int *t;t=a;a=b;b=t;main()int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(%3d%3dn,*p,*q);【解答】 3 55. 下列程序运行的结果为 。main()int a5=5,10,-7,3,7,i,j,t;sort(a);for(i=0; i=4; i+) printf(%3d,ai);sort(int a)int i,j,t; for(i=0; i4; i+) fo

6、r(j=0; jaj+1) t=aj; aj=aj+1; aj+1=t;【分析与提示】该程序的功能是将5个数由小到大进行排序。【解答】 -7 3 5 7 10 6. 下列程序运行的结果为 。void swap1(int x,int y)int t;t=x;x=y;y=t;return;void swap2(int *x,int *y)int t;t=*x;*x=*y;*y=t;return;main()int x=3,y=5;printf(%d,%dn,x,y);swap1(x,y);printf(%d,%dn,x,y);swap2(&x,&y);printf(%d,%dn,x,y);【分析与

7、提示】注意指针变量做函数参数时,改变形参的值就等同与改变了实参的值。【解答】3,5 3,5 5,37. 下列程序运行的结果为 。#include long fib(int g) switch(g) Case 0: return 0; case 1: case 2: return 1; return(fib(g-1)+fib(g-2); main() long k; k=fib(7); printf(k=%ldn,k); 【分析与提示】注意函数递归调用的条件。【解答】k=138以下程序运行后的输出结果是 。int f(int n)if(n=1) return 1;else return f(n-

8、1)+1;main()int i,j=0;for(i=1;i3;i+)j+=f(i);printf(%dn,j);【解答】39.下列程序运行的结果为 。 int x1=30,x2=40;main()int x3=10, x4=20;swap(x3,x4);swap(x2,x1);printf(%d,%d,%d,%dn,x3,x4,x1,x2);swap(int x,int y)x1=x;x=y;y=x1;【提示】本题考查全局变量的作用范围。【解答】 10,20,40,4010. 下列程序运行的结果为 。#include void num()extern int x,y;int a=15,b=1

9、0;x=a-b;y=a+b;int x,y;main()int a=7,b=5;x=a+b;y=a-b;num();printf(%d,%dn,x,y);【分析与提示】用extern进行外部变量说明。【解答】5,25三编程题1已知圆的半径为R,求它的面积。 #include /* 包含文件 */ #include /* 包含数学库函数 */ #define PI 3.14159 /* 宏定义 */ main( ) /* 主函数 */ float area(float); /* 函数area的原型 ,即函数说明 */ float r,s; /* 主函数中的局部变量定义 */ printf(“ 请

10、输入半径: n”); scanf(“%f”,&r); s=area(r); /* 调用area函数 */ printf(“圆的半径为:%fn”,r); printf(“圆的面积为:%fn”,s); float area(float a) /* 定义函数area */ float d; d=PI*a*a; return(d); /* 返回计算结果 */ 【分析与提示】本程序由主函数main()和自定义函数area()组成。程序的前2句是文件包含语句。第3句是宏定义语句,即用标识符PI来代替数字3.14159。运行:请输入半径: 1.1 显示:圆的半径为:1.1 圆的面积为:3.8013242编写

11、一个函数,输出三个数中的最大值。【提示】在main()函数中输入数据,调用求3个数最大值函数。int max(int x,int y,int z)int t ;if(x=y) t=x ;else t=y;if(tz) t=z;return(t);main() int x,y,z;printf(input 3 numbers:);scanf(%d%d%d,&x,&y,&z);printf(max=%dn,max(x,y,z);3. 已知某门课程10个学生的成绩,编程序求出平均成绩,用函数实现求平均成绩。【解答】参考代码:#includestdio.h float fun(float a,int

12、n) int i; float ave,s=0; for(i=0;in;i+) s+=ai; ave=s/n; return ave; void main() float a10,ave; int i; printf(请输入10个学生的成绩:); for(i=0;i10;i+) scanf(%f,&ai); ave=fun(a,10); printf(平均成绩为:%5.2fn,ave);4编写一个函数,将一个任意三位数n逆序输出。即若n=456,则输出654。【提示】将一个三位数n分解为个位、十位和百位分别放入c,b,a中,然后逆序输出。int rec(int x) int a,b,c ; a

13、=x/100; b=x%100/10; c=x%10; return(c*100+b*10+a);main() int rec(int x); int y,z; printf(input a number(100-999):); scanf(%d,&y); z=rec(y); printf(the changed number is :%dn,z); 5已知e=1+1/1!+1/2!+1/3!+1/n!,试用公式求e的近似值,要求累加所有不小于10-6的项值。用函数fun完成求任何数的阶乘。【解答】参考代码:#includestdio.hdouble fun(double n) double

14、s=1; int i; for(i=1;i10e-6) t=1.0/fun(i); e+=t; i+; printf(%lfn,e);6编写函数fun(),该函数的功能是:将两个两位的正整数a,b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用到该函数后,c=5142。【解答】参考代码:#includestdio.hint fun(int a,int b) int c,a1,a2,b1,b2; a1=a/10; a2=a%10; b1=b/10; b2=b%10; c=a2*

15、1000+b1*100+a1*10+b2; return c; void main() int a,b,c; printf(请输入两个两位数:n); scanf(%d%d,&a,&b); c=fun(a,b); printf(%dn,c);7.输入10个数,把最小数与第一个数交换,把最大数与最后数交换。【解答】参考代码:#includestdio.hvoid main() int a10,min,max,i,index1,index2; printf(请输入10个数:); for(i=0;i10;i+) scanf(%d,&ai); min=max=a0; index1=index2=0; f

16、or(i=1;imax) max=ai; index1=i; if(aimin) min=ai; index2=i; if(index2!=0) aindex2=a0; a0=min; if(index1!=9) aindex1=a9; a9=max; for(i=0;i10;i+) printf(%6d,ai); printf(n);8编写求字符串长的函数。【提示】字符串的长度不包括0在内。参考代码:#include main()int test();int n;char str100;gets(str);n=test(str);printf(the numbers is :%dn,n);i

17、nt test(str)char str;int n=0;while(strn!=0)n+;return(n);9编写一个函数判定一个数是否是素数,要求在主函数中调用该函数,输入一个整数,输出是否是素数的信息。【分析与提示】由主函数任意输入一个整数m,将其值传递给子函数isprime(m)由子函数判断这个数是否为素数。参考代码:#include main() int m;printf(Please input a data m=:);scanf(%d,&m);isprime (m); isprime(int n)int i,k;k=n/2;for(i=2;i=k+1)printf(This i

18、s a prime number);else printf(This is not a prime number);10编写用指针删除字符串中空格的函数。【提示】用指针p1指向待处理的字符串,用*p1从串头到串尾逐一走动,每走到一个字符判断其是否为空格,若不是空格,则将其保存到指针*p2中。参考代码:#include void dele(char *str) char *p1,*p2; for(p1=p2=str;*p1!=0;p1+) if(*p1= ) continue; else *p2+=*p1; *p2=0; main( ) char str100; gets(str); dele(

19、str); puts(str); 11编写用指针写合并两个字符串的函数。【分析与提示】先将字符串str1从串头到串尾逐一拷贝到字符串str3中,接着将字符串str2从串头到串尾逐一拷贝到字符串str3中。参考代码:#include char unitestring(char *str1,char *str2,char *str3) /*合并函数*/ int i=0; while(*str1)!=0) *(str3+i)=*str1; i+; str1+; while(*str2)!=0) *(str3+i)=*str2; i+; str2+; *(str3+i)=0; /*不能自动加入0*/

20、main( ) char p50,q50,r100; /* r为连接后的字符串*/ printf(Please enter the first string:n); gets(p); /*输入字符串*/ printf(Please enter the second string:n); gets(q); /*输入字符串*/ unitestring(p,q,r); puts(r); /*输出结果*/ 12编写一个程序完成“菜单”功能。提供三种选择途径:(1)求水仙花数(narcissus number),找出100至999之间的所有水仙花数。(2)求出素数(prime number),找出2至n

21、之间的所有素数。(3)求Faibonacci数列前n项的值。#include “math.h”main() int m, xz; void narcissus( ); void prime( ); void faibonacci( ); clrscr( ); m=0; while(m=0) printf(“nn”); printf(“ 1 find narcissus numbern”); printf(“ 2 find prime numbern”); printf(“ 3 find Faibonacci numbern”); printf(“ other number exit!n”);

22、printf(“ input number please!n”); scanf(“%d”,&xz); switch(xz) case 1: narcissus( ); break; case 2: prime( ); break; case 3: faibonacci( ); break; default: m=1;m=1; void narcissus( ) int k,a,b,c,d; for (k=100; k1000; k+) a=k/100; b=k%100/10; c=k%10; d=a*a*a+b*b*b+c*c*c; if (d=k) printf(“%5dn”, k); vo

23、id prime ( ) int i, j, k, n, m=0; printf(“input n please !n”); scanf(“%d”, &n); for(i=2; in; i+) j=sqrt(i); for(k=2; kj) m+;printf(“%6d”, i);if (m%10=0) printf(“n”); void faibonacci( ) long f1, f2; int k, n; printf(“int n please!n”); scanf(“%d”, &n); f1=1; f2=1; for (k=1; k=n/2; k+) printf(“%8d%8d”, f1, f2); if (k%20) printf(“n”); f1=f1+f2; f2=f1+f2; 【分析与提示】程序共有4个函数,其中主函数提供了主菜单,允许选择三种情况之一,否则就退出。通过开关语句switch进行选择。为了不断的提供菜单,用while来永远循环。一开始给变量m赋值为0,m=0就继续循环,一旦选择了不存在的情况,则将m置1,循环就结束。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1