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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《浙工大C语言课本习题答案》.docx

1、浙工大C语言课本习题答案 浙工大C语言课本习题答案 C程序设计习题参考答案 习 题 一 . 2 习 题 二 . 3 习 题 三 . 5 习 题 四 . 8 习 题 五 . 14 习 题 六 . 17 习 题 七 . 20 习 题 八 . 26 习 题 九 . 33 习 题 十 . 35 习 题 十一 . 36 1 习 题 一 1. 填空题 计算机程序设计语言按其发展可分为三类,即 机器语言 、汇编语言和 高级语言 。 C程序是 函数 构成的,一个C程序中至少包含 1个main函数。因此, 函数是C程序的基本单位。 C程序注释是 /* 和 */ 所界定的文字信息组成的。 函数体一般包括 函数首行

2、 和 函数体 。 在任何C程序中都必须且只能有一个主函数, 主函数名必须为 main 。 2. 判断下列各个叙述的正确与否 C程序的执行总是从该程序的main函数开始,在main函数最后结束【】 C程序的注释部分可以出现在程序中任何位置,它对程序的编译和运行不起任何作用,但可以增加程序的可读性【】 “/*”与“*/”界定的注释必须在同一行【】 通过了编译、连接的程序就是正确的程序【】 有计算结果输出的程序一定是正确的程序【】 编译错误是语法错误,运行结果错误是逻辑错误【】 编译时在信息窗口出现包含“error”的信息,说明程序存在警告性错误【】 源程序每次修改后,都必须重新编译、连接【】 3.

3、 简答题 算法的含义、特点是什么? 解答:算法是解题方法的精确描述。有穷性、确定性、有多或零个输入、有1或多个输出、有效性。 写出一个C程序的基本结构。 编译预处理命令、注释、1个main和若干个自定义函数构成,函数格式如下:函数类型 函数名(类型标识符 形参,类型标识符 形参,.) 类型声明语句; 执行语句部分; 写出在你使用的计算机系统上,进入C环境以及运行、调试程序的简要步骤。 输入x后计算其正弦值的源程序如下。编译信息是否表示有致命性错误?应如何修改? 解答:致命性错误为第6行函数sin未声明,应加入编译预处理命令 #include 4. 编程题 请上机调试、运行本章课本上C语言程序例

4、题46 2 仿照例6编程,输入两个变量后,输出其中较大的值。#include void main() int a, b; printf(请输入A,B的值:nscanf( if(ab) printf( 仿照例题编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。#include void main() float r, h, v; printf(请输入半径、高的值:nscanf(v=r*r*h;printf( 习 题 二 1. 将下列程序上机运行,写出你所使用的C语言处理系统中short、int以及long类型数据的字长和数值范围。 #include void main() printf(类型数

5、据的字长为:%dnprintf(类型数据的字长为:%dnprintf(类型数据的字长为:%dn 解答:VC+环境下,分别为2、4、4 2. 仿照题1编程,测试float、double类型数据的字长。#include void main() printf(类型数据的字长为:%dnprintf(类型数据的字长为:%dn 3. 判断下列各个叙述的正确与否。 C的long类型数据可以表示任何整数【】 任何变量都必须要声明其类型【】 C的任何类型数据在计算机内都是以二进制形式存储的【】 scanf函数中的格式符“%d”不能用于输入实型数据【】 格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的

6、宽度【】 按格式符“%d”输出float类型变量时,截断小数位取整后输出【】 按格式符“%”输出i时,输出结果为 【】 3 scanf函数中的格式符“%f”能用于输入double类型数据【】 4. 指出下列各项中那些是C的常量,对合法的C常量请同时指出其类型。 10,150007-0x3d1e0e1o7o8 xxosin(3)0xf16+2a 解:007整型,-0x3d整型,1e0实型,x字符型,0xf16整型,字符串007字符型,+2实型,实型,字符型,a字符型 5. 指出下列各项中那些是C的标识符。 x_1X_2Highprintf3DSi/j e2-e2countIntnumber $2

7、3next_ 解:x_1、X_2、High、e2、count、Int、number、next_ 6. 根据条件,写出下列各题的输出结果。 int i=234,j=567; 函数printf(的输出结果是 234567 。 int i=234; float x=-; 函数printf(的输出结果是 i= 234 x=- 。 float alfa=60,pi=; 函 数 printf( 的输出结果是 sin( 60*/180) 。 char ch=$,float x=; 函数printf(的输出结果是 $ n 。 int d=27; 函数27 ,34 ,1b。 float x1=,x2=-; 函

8、数 printf( x(%d)=%.2fn 的输出结果是 x(1)= x(2)=- 7. 根据下列条件写出变量i1、c1、f1、d1的当前值。 执行scanf(时输入52$ 后。i1为52,c1为$,f1为,d1为 执行scanf(时输入52$ 后。i1为52,c1为9,f1为,d1为 8.下列源程序输入x、y后,输出x的y次方。运行时无编译、连接错误,但输入不同格式的两组数据输出结果却不同,哪一组是对的?请说明原因。 解答:第1组输入数据错误,因为格式串中有“,”所以键盘输入数据x、y之间也一定以逗号为间隔符。 printf(的输出结果是 4 9. 写出下列程序运行时输入 3 4 5 的输出

9、结果。#include #include 输出结果:边长为,的三角形面积为void main() float a1,a2,a3,s,d; scanf(s=(a1+a2+a3)/2; s=sqrt(s*(s-a1)*(s-a2)*(s-a3); printf(边长为%.2f,%.2f,%.2f的三角形面积为:%-n 10. 编程题 编程,用getchar函数接收2个字符,用putchar函数输出这2个字符。 解答: #include void main() char x; x=getchar(); putchar(x);x=getchar(); putchar(x); 编程,用scanf函数输入

10、1个10进制整数、1个单精度浮点数、1个双精度浮点数,并通过printf函数把输入的3个数分别输出。 解答: #include void main() int k; float x; double d;scanf( printf( 编程,输入1个整数,然后分别以8进制、10进制、16进制形式输出该数。 解答: #include void main() int x; scanf( printf( 习 题 三 1. 根据下列数学式,写出C的算术表达式。 ?(a2?b)?y342?10tan?125?ba?6b?5?c?d5 x? 函数f10_2可以显示形参变量所对应的二进制形式。下列程序的两行显示

11、结果分别为“1011”、“100011”。 #include void f10_2(int n) if( n=0 ) return; else f10_2( n/2 );printf( void main() f10_2(11);putchar(n);f10_2(35);putchar(n); 4根据下列各小题题意编程。 编制函数,返回三个变量中的最大值。 解答: float f(float a,float b,float c) float max; max=(max=ab?a:b)c?max:c; return max; 编制函数,判断一个整数a是否是区间1,b之间的素数。 解答: int

12、f(int a,int b) int i; if(ab|a for(i=2; i 编写函数,其返回值为整数n从右边开始的第k位数字的值。如digit(231456,3)返回4,digit(1456,5)返回0。 解答: int f(int n,int k) int i; for(i=1;i 输出11000之间的所有完数。要求自定义一个函数,功能是判断某个正整数是否为完数,如果是完数,函数返回值为1,否则为0。 解答: #include int f(int n) int i,y=1; for(i=2;i 16 void main( int i; for(i=1;i 定义函数,形参为两个int类型

13、变量,功能是显示这两个数的最大公约数和最小公倍数。 解答: void f(int x,int y) int a=x; while(a%y!=0) a+=x; printf(最小公倍数%d,最大公约数%dn 多项式p(n,x)定义如下,编写递归函数求该多项式的值。 解答: double p(int n,double x) if(n=0) return 1; else if(n=1) return x; else return(2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n; 习 题 六 1. 单项选择题 程序中调用了库函数exit,必须包含头文件【D】 A、B、C、D、 程

14、序中调用了库函数strcmp,必须包含头文件【B】 A、B、C、D、 下列宏定义命令中,哪一个格式是正确的【C】 A、#define pi=; B、define pi= C、#define piD、#define pi(); 定义带参数的宏计算两个表达式的乘积,下列定义中正确的是【C】 A、#define muit(u,v) u*vB、#define muit(u,v) u*v; C、#define muit(u,v) (u)*(v)D、#define muit(u,v)=(u)*(v) 宏定义为“#define div(a,b) a/b”,对语句 “printf(”作宏替换后为【A】 A、p

15、rintf(、printf( C 、 printf( D printf( 2. 填空题 定义一个带参数的宏,若变量中的字符为大写字母则转换成小写字母#define utol(ch) ch=ch=A& ch 、 17 定义一个带参数的宏,将两个参数的值交换#define swap(a,b) double t; t=a;a=b;b=t; 函数f定义如下,执行语句“m=f(5);”后,m的值应为 8 。int f(int k) if(k=0|k=1) return 1; else return f(k-1)+f(k-2); 函数f定义如下,执行语句“sum=f(3)+f(3);”后,sum的值应为

16、6 。int f(int m) static int i=0;int s=0; for(;i 对下列函数f,f(f(4)的值是 5 。int f(int x) static int k=0;x+=k+; return x; 3. 写出下列程序的输出结果 程序 #include #define S x=y=z #define P3(x,y,z) printf(void main() int x,y,z; S=1; +x|+y|+z; P3(x,y,z);S=1; +x&+y|+z; P3(x,y,z);S=-1; +x|+y&+z; P3(x,y,z);S=-1; +x&+y&+z; P3(x,

17、y,z); 输出结果为 x=2 y=1 z=1x=2 y=2 z=1 x=0 y=0 z=-1x=0 y=-1 z=-1 程序 #include int func1() static int s=1;s+=2; return s; int func2() int s=1; s+=2; return s; void main() int i; for(i=0;i 18 printf( 输出结果为 func1=3func1=5func2=3func2=3 程序 #include int i=1,reset(),next(int),last(int),New(int); void main() in

18、t i,j;i=reset(); for(j=1;j printf( printf(printf( printf( int reset()输出结果为 i=1,j=1 return i; next(1)=1int next(int j)last(1)=10 return j=i+; new(1+1)=12int last(int j)i=1,j=3 static int i=10;next(1)=2return j=i-;last(1)=9new(1+2)=13int New(int i)i=1,j=3 int j=10;next(1)=3return i=j+=i;last(1)=8new(1

19、+3)=14 4根据下列各小题题意编程。 编程,输入3个数后输出其中绝对值最小的数。要求定义带参数的宏,计算两个数中绝对值最小的数。 解答: #include #include #define min(a,b) fabs(a) float a1,a2,a3,x; scanf( x=min(a1,a2); x=min(x,a3); printf( 编程,用梯形公式求函数 f(x)=x-sinx在0,1区间的定积分,要求用带参数的宏定义函数f(x)的计算公式。 解答: #include #include #define f(x) (x)*(x)-asin(x) 2 -1 19 void main(

20、) double x=0,y=0; for(int i=1;i 习 题 七 1. 单项选择题 下列数组声明语句中,正确的是【C】 A、int a=1,2,4,5;B、char a5=A,B,C,D,E; C、int a5=1,2;D、char a5= 数组声明语句为“int a6;”,输入数组所有元素的语句应为【B】 A、scanf( B、for(int i=0;i 数组声明语句为“float a34;”,引用第3行第1列的元素写作【A】 A、*(a+2)B、*(*a+2)C、a31D、*(a3+1) 初始化多维数组的语句中,可以缺省的是【B】 A、最后1个下标界 B、第1个下标界 C、第2个

21、下标界 D、以上都不对 数组声明为“int y43;”,表达式“*(y+2)+2-*y”的值为【D】 A、10B、20C、16D、8 数组声明为“char str120=”,调用函数“strcpy(str1,str2);”后,字符串str1的串长是【C】 A、13B、15C、6D、7 数组声明为“char str120=”,调用函数“strcat(str1,str2);”后,字符串str1的串长是【A】 A、13B、15C、6D、7 表达式“strcmp(”的值为【C】 A、0B、3C、1D、-3 2. 填空题。 未初始化的int类型数组,其各元素的值是 0 。 初始化时没有被赋值的字符类型数

22、组元素,它们的值为 0 。 数组声明为“int a6;”,数组元素a1是否又可以写作“*(a+)”?原因是 不可以,数组名不可改变 。 引用二维数组a第i行、j 列的元素,可以写作 *(*(a+i-1)+j-1) 或 ai-1j-1 。 数组声明为“int a66;”,表达式“*a+i”是指 第1行第i+1个元素的地址、 “*(a+i)”是指 第i+1行第1个元素的地址、“*a”又是指a00。 数组声明为“float x75;”,若x64是内存中从x00数起的第35个元素,则x44是第 25 个元素。 20 声明“char str120=后,使字符串str1为的赋值表达式,应为 str17=0

23、 。 将包括空格在内的6个字符串输入到字符数组a620中,输入语句可以写作for(i=0;i 3. 按照下列各题题意编程。 输入平面上凸10边形各点x、y坐标,计算并输出各点之间距离之和。 解答: #include #include void main() float x10,y10,s=0; int i; for(i=0;i for(j=i+1;j s+=sqrt(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj);printf( 编程,计算多项式 a0+a1x+a2x+a3x+.+ an-1x的和。 解答: #include void main() float a30,x,y;

24、int i,n,t; scanf( for(i=0;i for(i=1;i 输入n个数,按绝对值从小到大排序后输出。 解答: #include#includevoid main() float a20,temp; int i,j,k; for(i=0;i k=i; for(j=i+1;j for(i=0;i 输入一个5行、6列的数组,先以5行6列的格式输出该数组,然后找出该数组中值最小的元素、输出该元素及其两个下标值。 解答: #includevoid main() float a56,min; int i,j,k,l; 2 3 n-1 21 for(i=0;i for(j=0;j min=a00;k=0;l=0; for(i=0;i if(aij 输入一个5行、6列的数组,将每1行的所有元素都除以该行上绝对值最大的元素,然后输出该数组。 解答: #include#includevoid main() float a56,max; int i,j; for(i=0;i for(j=1;jfabs(max)max=aij

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

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