《c语言程序设计教程》课后习题答案.pdf_第1页
《c语言程序设计教程》课后习题答案.pdf_第2页
《c语言程序设计教程》课后习题答案.pdf_第3页
《c语言程序设计教程》课后习题答案.pdf_第4页
《c语言程序设计教程》课后习题答案.pdf_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章习题答案第一章习题答案 1 判断题判断题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 2 单选题单选题 1.A 2.D 3.C 4.B 5.A 3 分析下列程序的输出结果分析下列程序的输出结果 1. 输出结果为: I love the Beijing! We are students. 2. 输出结果为: a=5 3. 输出结果为: Enter a string: string string 4. 输出结果为: Enter a and d: 13 25.123 13, 25.12 5. 输出结果为: 112,p 97,a 4 编程题编程题 程序如下: #include void main() printf(*n); printf(? MENU ?n); printf($n); 5 修改下列程序中的错误,上机调试得到正确结果修改下列程序中的错误,上机调试得到正确结果 修改后的程序如下: #include void main() int a=10; char s50; gets(s); printf(%sn,s); printf(%dn,a); 4.6 简答题简答题 1语言有哪些特点? 答:1、语言是一个结构化程序设计语言 、语言编程简洁明了 3、语言功能很强 4、语言移植性很好 、语言也有一些不足 2为什么说语言是一种不完全的结构化程序设计语言? 答:从下述两点可看出语言是一种不完全的结构花程序设计语言: 、 可以使用 goto 语言在一个函数体内 、 允许一个函数中使用多个 return 返回语句 3语言程序结构上有何特点? 答:语言程序在结构上有如下特点: 、 语言程序是由一个或多个文件组成,每个文件是由一个或多个函数组成 、 语言程序是一个函数串,在诸多的函数中,有且仅有一个主函数 main 、 语言程序中的寒暑之间关系是调用关系, 任何一个函数都将被主函数或主函数所 调用的函数所调用 、 函数是语言中最小的结构化模块。 函数是由函数头和函数体组成, 函数头中有类 型说明、函数名和函数参数表;函数体是由若干条语句组成的。 4语言中标准输出设备是什么?标准设备输出操作有哪些常有函数? 答: 语言中,标准输出设备是显示器的屏幕。表针设备输出操作的函数有如下个: 、 输出一个字符的函数 putchar() 、 输出一个字符串的函数 puts() 、 格式输出函数 printf(),它可以按格式输出各种不同数据类型的表达式的值 5如何实现单文件的语言程序,如何实现多文件的语言程序? 答:参见书 P20 至 P23 1 第二章习题答案第二章习题答案 2.1 判断题判断题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 2.2 单选题单选题 1.C 2.D 3.C 4.A 5.B 6.C 7.A 8.B 9.D 10.D 2.3 填空题填空题 1. 标识符 关键字 分隔符 注释符 2. 八进制 十六进制 3. 整型 浮点型 4. 自动类 外部类 静态类 5. auto static 6. 文件级 函数级 2.4 分析下列程序的输出结果分析下列程序的输出结果 1. 46 171 3.58 0.032 2. a 97 1 49 12345 ab(在 visual c+环境下) 3. 5 3 8 0 4. 16 52 5. 0 ? 5 5 2.5 按下列要求进行编程按下列要求进行编程 1.编程求出 char 和 double 类型在你所用的机器上占内存的字节数 #include void main() printf(%d,sizeof(char); printf(%d,sizeof(double); 2.编程输出一个 long int 类型变量的值和地址值 #include void main() long int a; a=1233; printf(%ld,%ld,a, 3.编程定义一个自动类 char 型变量 c,用2给它初始化,再定义一个外部类 int 型变量 i,用 10 给它初始化,然后输出 i+c 的值 #include 2 void main() int i=10; char c=2; printf(%d,i+c); 2.6 简答题简答题 1在 C 语言程序中,可以使用没有定义的变量吗?定义了变量没有使用可以吗? 答:在 C 语言程序中,不可以使用没有定义的变量。也不可以定义了变量而没有使用。 2定义变量时不给出存储类说明符能说明该变量没有存储类吗?如果该变量有存储类,到 底是哪种存储类呢? 答:不能,如果定义在函数体外,则是外部类,否则是自动类 3定义变量时一定要给出初始值吗?不给出初始值的变量一定不能用吗? 答:定义变量时不一定要给出初始值。不给出初始值的变量也不一定不能用。外部类和静态 类变量有默认值可以使用。 4字符常量只可以与整型数进行运算吗? 答:也可以和浮点型数进行运算 5那种存储类的作用域与生命周期是不一致的。 答:静态类变量 1 第三章习题答案第三章习题答案 3.1 判断题判断题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 3.2 单选题单选题 1.B 2.D 3.A 4.C 5.D 6.A 7.B 8.C 9.D 10.A 3.3 填空题填空题 1. % *= 2. 增 1 减 1 赋值 3. 单目 赋值 三目 4. printf(“%dn”,sizeof(a+4.5); 8 5. (int)(d1+2*d2); 6 6. 单目 变量 表达式和常量 7. 丢弃 符号位或 0 8. 冒号 高 9. a 的值为 1,表达式的值为 3 10. 1 0 1 3.4 计算下列各表达式的值,并按其要求进行输出显示计算下列各表达式的值,并按其要求进行输出显示 1. 计算下列表达式的值,按%d 格式输出 (1) 51 (2) 15 (3) 28 (4) 1 (5) 2 2. 计算下列表达式的值,按%x 格式输出。 已知:unsigned int a=0 x2b,b=011; (1) 9 (2) 2b (3) 22 (4) a (5) ffffffca 3. 计算下列各表达式的值,并按%d 格式输出,假设各个表达式是相互独立,前后边无影 响。 已知:int a=8,b=5; (1) 该题有问题,将表达式更改为(a-b)+(-b) 其值为:16 (2) 26 (3) 2 (4) -1 (5) 25 4.计算下列各表达式的值,并按%d 的格式分别输出表达式的值和 a,b 的值 已知:int a=8,b=5; (1) 表达式的值为 :0 a=8 b=5 (2) 表达式的值为:1 a=8 b=5 (3) 表达式的值为:13 a=9 b=4 (4) 表达式的值为:7 a=2 b=8 2 (5) 表达式的值为:1 a=1 b=6 3.5 简答题简答题 1.已知:int a=0;,试问!a 的值与a 的值是否相等? 答:不相等 2.已知:int a=5;,试问表达式 a%-2 的值是正还是负? 答:正 3.将 double 型变量 x 和 y 的积强制转换为 int 型,使用下述两个表达式是否都可以? (int)x*y 和(int)(x*y) 答:前者不可以,后者可以。 4.已知:int a;,表达式 a=3+19-a=8*2 的值为 6,对吗? 答:不对,该表达式非法,将表达式改为 a=3+19-(a=8*2)才对 5.已知: char ch=M;, 表达式(ch=A PR3(x,y,z); 2.已知一个字符串中有大写字母和小写字母。 使用条件编译命令在满足一定条件下改写为 大写字母, 否则全改写为小写字母, 并判断大小写字母和转换大小写字母的操作都使用宏定 义来实现。 程序如下: #include #define ISUP(ch) (ch)=A int i; #ifdef up for(i=0;si;i+) if(ISLO(si) si=TOUP(si); #else for(i=0;si;i+) if(ISUP(si) si=TOLO(si); #endif printf(%sn,s); 3. 程序如下: #include #include #define S(a,b,c) (a+b+c)/2 #define AREA(a,b,c) (sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c) void main() double x=3.0,y=4.0,z=5.0; printf(AREA=%.2lfn,AREA(x,y,z); 4.6 简答题简答题 1预处理命令有哪些特点? 答:1、这种命令是在正常编译之前处理的 2、该命令前边加“#”号 3、该命令不是语句,其后不加分号 4、预处理命令多数是一种替换功能,为书写简单 2带参数的宏定义命令中,参数个数是否受限制?是否要指出参数的类型? 答:带参数的宏定义命令,参数个数不受限制。不需要指出参数的类型 3带参数的宏定义的运行效率比函数调用高,为什么不把所有函数都写成带参数的宏定 义? 答:带参数的宏定义命令是在编译前被替换的,不占用运行时间,又可以节省函数调用时的 额外开销, 但是它将增加编译后的目标代码。 这样对于函数较长的函数使用带参数宏命令将 会使程序目标代码增加,增加空间开销。 4文件包含命令是否只可以包含头文件?是否可以包含所有文件? 答: 文件包含命令可以包含头文件,也可以包含其它源文件,但是有些文件不可包含,如 执行文件。 5类型定义多用于哪些情况? 答:类型定义多用于如下情况: 1、 简化书写,将书写复杂的类型定义为书写简化的类型 2、 增加变量的更多有用信息 3、 使数据的类型得到检查,提高数据的安全性 第五章习题答案第五章习题答案 5.1 判断题判断题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 5.2 单选题单选题 1.D 2.C 3.A 4.D 5.C 6.B 7.D 8.B 9.C 10.A 5.3 填空题填空题 1. while do-wile for 2.在循环体内使用 break 语句 3. 给循环变量初始化 判断是否继续循环 改变循环变量的值 4. 10 5. n%i=0 5.4 分析下列程序的输出结果分析下列程序的输出结果 1. 10 5 2. 1 2 3. 24 4. i=4 j=3 5. for(i=0;i=100;i=i+2) s=s+i; printf(%d,s); 2.求出 100 之内自然数中最大的能被 31 整除的数 #include stdio.h void main() int i=100; for(;i=100;i-) if(i%31=0) break; printf(%dn,i); 3求出两个正整数的最大公约数 #include stdio.h void main() int m,n,t; m=18; n=45; if(mn) t=m; m=n; n=t; while(n!=0) t=m%n; m=n; n=t; printf(%dn,m); 4 #include stdio.h void main() int a; double i=2.0,j=1.0,sum=0.0,t; for(a=1;a=15;a+) sum+=i/j; t=i; i+=j; j=t; printf(sum=%.4lfn,sum); 5 #include stdio.h void main() int a,b,c; for(a=0;a=20;a+) for(b=0;b34;b+) for(c=0;c=100;c+) if(a+b+c=100) if(5*a+3*b+c/3=100) printf(%d,%d,%dn,a,b,c); 6 #include stdio.h void main() int i,j,n=0; for(i=1;i500) continue; if(n%8=0) printf(n); n+; printf(%8d,j); printf(n); 7 #include stdio.h void main() int a,b,c; for(a=0;a10;a+) for(b=0;b10;b+) for(c=0;c10;c+) if(101*a+20*b+101*c=1333) printf(a=%d,b=%d,c=%dn,a,b,c); 8 #include stdio.h void main() int i=1; double sum=0.0; for(;i=100;i+) if(i%2=0) sum-=1.0/i; else sum+=1.0/i; printf(sum=%.8lfn,sum); 5.6 简答题简答题 1什么是复合语句?它与分程序有何不同? 答: 使用花括号将两条或两条以上的语句括起来,称为复合语句。含有说明语句的复合语 句称为程序。复合语句中包含分程序,分程序是复合语句的一种。 2开关语句的语句序列中是否一定要有退出语句 break? 答:开关语句的语句序列中可以喊又退出语句 break,也可以不含有 break 3在条件语句嵌套使用的情况下,else 子句是如何配对的? 答: 在条件语句嵌套使用的情况下,else 子句是与它最近的 if 子句配对的,一个 if 子句只 允许有一个 else 子句。 4一直 for 循环语句格式如下:for(d1;d2;d3) 请描述该语句的执行过程。 答: 先计算 d1,然后计算 d2,若 d2 为 0,则退出循环语句;若 d2 非 0 则执行语句,执 行完语句后,计算 d3,然后再计算 d2,若 d2 为 0,则退出循环语句;若 d2 非 0 则继续 执行语句,执行完语句后,计算 d3,依次循环执行,一直到 d2 为 0 时,退出循环语句。 5break 语句和 continue 语句在循环体内是否具有相同的功能? 答:break 语句和 continue 语句在循环体内的功能是不同的。break 语句是用来退出该重 循环,而 continue 是用来结束本次循环的。 第六章习题答案第六章习题答案 6.1 判断题判断题 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 6.2 单选题单选题 1.A 2.D 3.C 4.B 5.C 6.A 7.C 8.D 9.D 10.B 6.3 分析下列程序的输出结果分析下列程序的输出结果 1. T a This is a program. program. 2. 0 5 0 14 3. 6.10 13.60 4. $ #$ #$ #$ #$ 5. a13=8 6.4 编程题编程题 1. 编程将一个数组的元素值按逆序重新存放。 #include #include void main( ) char c120, c; int n, i; scanf(%s,c1); n=strlen(c1) -1; for(i=0; i=n/2; i+) c=c1i; c1i=c1n-i; c1n-i=c; printf(n=%dnstring=%sn, n+1, c1); 2. 打印杨辉三角 #include void main( ) int i,j,a88; a00=1; for(i=1;i8;i+) ai0=1; aii=1; for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i8;i+) for(j=0;j=0;i-) if(ai10) printf(%d,ai); else printf(%c,A+ai-10); printf(n); 4. 输入一个 34 的 int 型数矩阵,求出其中的最大值和最小值 #include void main( ) int a34=43,23,78,44,78,34,12,33,59,90,89,94; int i,j,max,min; max=min=a00; for(i=0;i3;i+) for(j=0;jmax) max=aij; printf(max=%dn,max); for(i=0;i3;i+) for(j=0;j4;j+) if(aijmin) min=aij; printf(min=%dn,min); 5. 编程将一个字符串输入到一个已知字符串的指定位置 #include void main( ) int i,j,k,n=8; char str1=This is program; char str2=the , str320; for(i=0;i=s;p-) printf(%c,*p); printf(n); 2有若干个已经排好序的 int 型数序列,将一个已知的 int 型数按顺序插入。 #include void main() int a7=11,32,43,65,86,97,104; int i,j,k=33; for(i=0;i6;i+) if(ki;j-) *(a+j)=*(a+j-1); *(a+i)=k; for(i=0;i6;i+) printf(%5d,*(a+i); printf(n); 3输出一个二维 int 型数组中最大的元素、最小的元素以及所有元素的平均值 #include void main() int a34=1,2,3,4,5,6,7,8,9,10,11,12; int i,j,min=a00,max=a00; double ave=0; for(i=0;i3;i+) for(j=0;j*(*(a+i)+j) min=*(*(a+i)+j); if(max*(*(a+i)+j) max=*(*(a+i)+j); ave+=*(*(a+i)+j)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论