第一章程序设计概述 1.1查找一些有关程序设计发展的资料,了解程序设计语言的发展过程。尤其是C语言 的发展过程 (略) 12了解算法概念,试着用教材上介绍的方法,描述日常生活中的几个例子 (略) 13查找资料,归纳一下计算机求解数学问题的算法类型 (略) 14查找资料,了解其他算法描述方法的特点 (略) 1.5结构化程序设计中讨论的三种基本结构是什么?有什么特点?为什么要提倡结构 化程序设计方法? (略) 16C程序的基本组成是怎样的?main函数在C程序中的作用如何? (略) 1.7熟悉 Trubo c2.0集成开发环境,了解系统的基本使用方法。 (略) 1.8参考本章例1.13的程序,编写一个程序,在屏幕上输出你的姓名。试着上机编 编译、运行你的程序 #include <stdio. h> maino printf( My Name is: Your Name! \n); 1.9故意在上题的程序中制造一点错误,看看编译系统如何处理它们。 (略 1.10用1.33介绍的步骤,设计下面问题的算法: (1)用三角形的边长计算三角形的面积 解:问题的输入数据是三角形的三个边长,应使用浮点数,用变量a、b、c表示,输入方 法可以用键盘输入或指定确定值。输出是三角形的面积值,使用浮点数,用变量area 表示。输入输出数据的关系用数学公式描述为: area=ys*(s-a)*(s-b)*(s-c) 其中s=-(a+b+c) 使用顺序结构就可完成以上计算,算法如下: 开始 输入a、b、c 计算s=-(a+b+c) 计算area=sqrs*(s-a)*(S-b)*(s-C)
第一章 程序设计概述 1.1 查找一些有关程序设计发展的资料,了解程序设计语言的发展过程。尤其是 C 语言 的发展过程。 (略) 1.2 了解算法概念,试着用教材上介绍的方法,描述日常生活中的几个例子。 (略) 1.3 查找资料,归纳一下计算机求解数学问题的算法类型 (略) 1.4 查找资料,了解其他算法描述方法的特点。 (略) 1.5 结构化程序设计中讨论的三种基本结构是什么?有什么特点?为什么要提倡结构 化程序设计方法? (略) 1.6 C 程序的基本组成是怎样的?main 函数在 C 程序中的作用如何? (略) 1.7 熟悉 Trubo C2.0 集成开发环境,了解系统的基本使用方法。 (略) 1.8 参考本章例 1.13 的程序,编写一个程序,在屏幕上输出你的姓名。试着上机编辑、 编译、运行你的程序。 #include <stdio.h> main() { printf("My Name is : Your Name!\n"); } 1.9 故意在上题的程序中制造一点错误,看看编译系统如何处理它们。 (略) 1.10 用 1.3.3 介绍的步骤,设计下面问题的算法: (1) 用三角形的边长计算三角形的面积。 解:问题的输入数据是三角形的三个边长,应使用浮点数,用变量 a、b、c 表示,输入方 法可以用键盘输入或指定确定值。输出是三角形的面积值,使用浮点数,用变量 area 表示。输入输出数据的关系用数学公式描述为: area= s *(s − a)*(s −b)*(s − c) 其中 s= ( ) 2 1 a + b + c 使用顺序结构就可完成以上计算,算法如下: 开始 输入 a、b、c 计算 s= ( ) 2 1 a + b + c 计算 area=sqrt( s *(s − a) *(s − b) *(s − c) )
输出area 结束 (2)对5个同学某学期的数学成绩,求出平均分,并找出成绩最高的同学是哪一位。 解:问题的输入数据是5个同学某学期的数学成绩,使用浮点数,用数组a5]表示,从键 盘输入。输出是平均分和最高分,使用浮点数,用变量 average和ma表示。求平均 分需要一个循环来实现每一个成绩的累加,循环中同时可通过比较找到最大值。 算法如下 开始 输入数组元素a[0]~a[4] average、max初值赋0 对数组元素下标i,从0~4循环,做下面操作 计算 average= average+a[il if (ai]>max)max=a[] 计算 输出aver 结束 l.11画出上题算法的流程图表示,试着写出它们的伪代码算法 (略 第二章数据类型、运算符与表达式 2.1C语言的基本数据类型有哪些?数据类型对数据表示和运算有什么约束? 略 22什么是标识符和关键字?有什么作用?语法组成如何?熟悉C语言的关键字(它 们只有32个) (略) 23常量和变量有何区别?常量和符号常量有何区别? (略) 24字符和字符串表示形式有何区别?“a’和“a”有什么不同?数字和数字字符有何 区别?1和‘1’有什么不同?空字符“\0’和空格字符’有何区别?它们的ASCI码 值有什么不同? (略) 2.5C语言变量机制实现的基础是什么?想一想变量的名字、地址、值、类型有什么关 系?变量有哪些基本操作? (略) 26C语言基本数据类型数据的字面量是如何描述的? (略) 27在教材的附录中查找ASCⅡ码编码信息,归纳以下ASCⅡ码编码方案的特点,常 用字符的大致编码顺序
输出 area 结束 (2)对 5 个同学某学期的数学成绩,求出平均分,并找出成绩最高的同学是哪一位。 解:问题的输入数据是 5 个同学某学期的数学成绩,使用浮点数,用数组 a[5]表示,从键 盘输入。输出是平均分和最高分,使用浮点数,用变量 average 和 max 表示。求平均 分需要一个循环来实现每一个成绩的累加,循环中同时可通过比较找到最大值。 算法如下: 开始 输入数组元素 a[0]~a[4] average、max 初值赋 0 对数组元素下标 i,从 0~4 循环,做下面操作 计算 average= average+a[i] if (a[i]>max) max= a[i] 计算 average= average/5 输出 average、max 结束 1.11 画出上题算法的流程图表示,试着写出它们的伪代码算法。 (略) 第二章 数据类型、运算符与表达式 2.1 C 语言的基本数据类型有哪些?数据类型对数据表示和运算有什么约束? (略) 2.2 什么是标识符和关键字?有什么作用?语法组成如何?熟悉 C 语言的关键字(它 们只有 32 个)。 (略) 2.3 常量和变量有何区别?常量和符号常量有何区别? (略) 2.4 字符和字符串表示形式有何区别?‘a’和“a”有什么不同?数字和数字字符有何 区别?1 和‘1’有什么不同?空字符‘\0’和空格字符‘ ’有何区别?它们的 ASCII 码 值有什么不同? (略) 2.5 C 语言变量机制实现的基础是什么?想一想变量的名字、地址、值、类型有什么关 系?变量有哪些基本操作? (略) 2.6 C 语言基本数据类型数据的字面量是如何描述的? (略) 2.7 在教材的附录中查找 ASCII 码编码信息,归纳以下 ASCII 码编码方案的特点,常 用字符的大致编码顺序
(略) 28在教材的附录中查找C语言对运算符优先级和结合方式的规定,体会什么场合需 要使用优先级?什么场合需要使用结合方式? (略) 29在教材的附录中查找关于C库函数的内容,熟悉C语言提供的主要数学函数的分 类和常用数学函数的使用方法 略) 2.10表达式求值中,C语言对类型如何处理?什么是自动类型转换?什么是强制类型 转换?如何转换? 211练习将下面各数用二进制、八进制和十六进制表示 (2)65 (3)-1 (4)-127 (5)150 (6)-l11 (7)2500(8)-1200(9)-540 (10)25000 (使用 windows系统的计算器工具可以帮助你快速完成上面计算) 解:二进制补码表示是理解整数运算溢出现象及各种整型数据类型转换方法和结果的基础。 计算机系的学生应该熟练掌握。 答案见下表: 十进制 八进制 十六进制 14 E 65 l10010 145 65 1111111111111111 177777 FFFF 127 11111110000001 177601 FFi 150 10010110 226 1111111110010001 177621 100l11000100 4704 9C4 200 llll0ll01010000 175520 FB50 111110111100100 7674 FDE4 25000 l10000110101000 60650 61A8 212指出下面字符序列中不合法的标识符 a X f-123 解:合法的标识符有 213写出下列数学表达式在C语言中相应的表达式表示 (1)-1200 (2)cXA+b
(略) 2.8 在教材的附录中查找 C 语言对运算符优先级和结合方式的规定,体会什么场合需 要使用优先级?什么场合需要使用结合方式? (略) 2.9 在教材的附录中查找关于 C 库函数的内容,熟悉 C 语言提供的主要数学函数的分 类和常用数学函数的使用方法。 (略) 2.10 表达式求值中,C 语言对类型如何处理?什么是自动类型转换?什么是强制类型 转换?如何转换? 2.11 练习将下面各数用二进制、八进制和十六进制表示: (1)14 (2)65 (3)-1 (4)-127 (5)150 (6)-111 (7)2500 (8)-1200 (9) -540 (10)25000 (使用 windows 系统的计算器工具可以帮助你快速完成上面计算) 解:二进制补码表示是理解整数运算溢出现象及各种整型数据类型转换方法和结果的基础。 计算机系的学生应该熟练掌握。 答案见下表: 十进制 二进制 八进制 十六进制 14 1110 16 E 65 1100101 145 65 -1 1111111111111111 177777 FFFF -127 1111111110000001 177601 FF81 150 10010110 226 96 -111 1111111110010001 177621 FF19 2500 100111000100 4704 9C4 -1200 1111101101010000 175520 FB50 -540 1111110111100100 176744 FDE4 25000 110000110101000 60650 61A8 2.12 指出下面字符序列中不合法的标识符: 4a1 def a_x_1 $usa x 123 0x56 f-123 num# age int 解:合法的标识符有: def a_x_1 age int 2.13 写出下列数学表达式在 C 语言中相应的表达式表示: (1) 24 4 5 1200 − (2)c× a b 2 2 +
(3)lnln(1035+2) 解:(1)1200(24-4*5)如果希望浮点数结果可考虑:1200(24-4*5.0) (2)c*sqrt(a*a+b*b) (3)log(og( power(10,3.5)+2) 2.14指出下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到 什么类型?表达式计算的结果是什么? (1)2.5+2*7%2/4 (2)4°(2L+6.5)-12 (3)10/(5*3) (4)2*10.0(5*3) 解:(1)2.5+2*7%2/4结果:浮点数2.5,+运算发生类型转换,从整型转换到浮点型 (2)4+(2L+6.5)-12结果:浮点数22,+运算的2L从长整型转换到浮点型,*运算的4 从整型转换到浮点型,-运算的12从整型转换到浮点型 (3)10(5*3)结果:整数0,没有类型转换,均是整数运算 (4)2*10.0(5*3)结果:浮点数1.333/运算的第二个运算数从整型转换到浮点型 运算的2从整型转换到浮点型。 2.15设:a是int型变量,a=10,写出下面表达式运算后,a变量的值 (1 (3)a=a+=a*=a (4)a%=6 解:(1)130 (2)0 (3)0 (4)4 216设:x=2.7,a=8,y=4.5,计算下面表达式的值: y+a%5*(int)(x+y)/2%4 解:浮点数65 217写出程序运行结果。 main( t int x=5,y, z; printf("%d %d\n"x,y) z=++x*2; printf("%d %d\n"x, 2); 解:63 714 2.18写出程序运行结果。 maino
(3)lnln(103.5+2) 解:(1)1200/(24-4*5) 如果希望浮点数结果可考虑:1200/(24-4*5.0) (2)c*sqrt(a*a+b*b) (3)log(log(power(10,3.5)+2)) 2.14 指出下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到 什么类型?表达式计算的结果是什么? (1) 2.5+2*7%2/4 (2) 4*(2L+6.5)-12 (3) 10/(5*3) (4) 2*10.0/(5*3) 解:(1)2.5+2*7%2/4 结果:浮点数 2.5,+运算发生类型转换,从整型转换到浮点型。 (2)4*(2L+6.5)-12 结果:浮点数 22,+运算的 2L 从长整型转换到浮点型,*运算的 4 从整型转换到浮点型,-运算的 12 从整型转换到浮点型。 (3)10/(5*3) 结果:整数 0,没有类型转换,均是整数运算。 (4)2*10.0/(5*3) 结果:浮点数 1.33333,/运算的第二个运算数从整型转换到浮点型, *运算的 2 从整型转换到浮点型。 2.15 设:a 是 int 型变量,a=10,写出下面表达式运算后,a 变量的值。 (1) a*=a+3 (2) a/=a+a (3) a-=a+=a*=a (4) a%=6 解: (1) 130 (2) 0 (3) 0 (4) 4 2.16 设:x=2.7,a=8,y=4.5,计算下面表达式的值: y+a%5*(int)(x+y)/2%4 解: 浮点数 6.5 2.17 写出程序运行结果。 main() { int x=5,y,z; y=8-x++; printf("%d %d\n",x,y); z=++x*2; printf("%d %d\n",x,z); } 解: 6 3 7 14 2.18 写出程序运行结果。 main()
a=(b=(c=3)*5)*2-3; printf("%od %d %d\n", a, b, c) 解:27153 第三章语句及控制结构 3.1C语言的语句是如何分类的?有什么特点?为什么说C语言是表达式语言?怎样区 分表达式和表达式语句?什么地方用表达式?什么地方用表达式语句? (略 3.2C语言提供了那些语句支持结构化程序设计? break和 continue语句的控制作用是 怎样的?使用goo语句对程序有什么影响? (略) 3.3C语言标准输入输出是如何工作的?查找其他关于程序设计语言的资料,C语言 把输入输出功能作为函数而不作为语言的基本部分有什么好处? 34什么是关系运算?什么是逻辑运算?C语言中如何表示“真”和“假”? (略) 3.5计算下面表达式的值。设a=1,b=2,c=3 (1)a=al=b?b: c (2)a>b?b+l:c+1 (3)(a=4)?a-:b- :(1)0关系运算符的优先级高于赋值运算符。 (3)1注意条件表达式的条件部分是一个赋值表达式 36写出满足下面条件的关系或逻辑表达式 (1)a在区间(3,10)内 (2)x是3的倍数 (3)x和y的和大于100且x大小于45 (4)a等于c或b不等于0 (5)a是小写字母 解:(1)a>3&&a<10 (2)x%3==0 (3)x+y>100&&x>45 (4)a=cl‖b!=0 a,&&a<=‘z 3.7计算下面逻辑表达式的值。设a=0,b=1,c=2,d=4
{ int a,b,c; a=(b=(c=3)*5)*2-3; printf("%d %d %d\n",a,b,c); } 解: 27 15 3 第三章 语句及控制结构 3.1 C语言的语句是如何分类的?有什么特点?为什么说C语言是表达式语言?怎样区 分表达式和表达式语句?什么地方用表达式?什么地方用表达式语句? (略) 3.2 C 语言提供了那些语句支持结构化程序设计?break 和 continue 语句的控制作用是 怎样的?使用 goto 语句对程序有什么影响? (略) 3.3 C 语言标准输入输出是如何工作的?查找其他关于程序设计语言的资料,C 语言 把输入输出功能作为函数而不作为语言的基本部分有什么好处? 3.4 什么是关系运算?什么是逻辑运算?C 语言中如何表示“真”和“假”? (略) 3.5 计算下面表达式的值。设 a=1,b=2,c=3。 (1)a = a!=b?b:c (2)a>b?b+1:c+1 (3)(a=4) ? a--:b-- 解: (1)0 关系运算符的优先级高于赋值运算符。 (2)4 (3)1 注意条件表达式的条件部分是一个赋值表达式。 3.6 写出满足下面条件的关系或逻辑表达式。 (1)a 在区间(3,10)内。 (2)x 是 3 的倍数。 (3)x 和 y 的和大于 100 且 x 大小于 45。 (4)a 等于 c 或 b 不等于 0 (5)a 是小写字母 解: (1)a>3 && a<10 (2)x%3==0 (3)x+y>100 && x>45 (4)a==c || b!=0 (5)a>=‘a’&& a<=‘z’ 3.7 计算下面逻辑表达式的值。设 a=0,b=1,c=2,d=4