第3章」 最简单的C程序设计 本章学习目标 在上一章介绍了程序中用到的一些基本要素 (常量、变量、运算符、表达式等),它们是构成 程序的基本成分。在第1章中已经介绍了几个简单 的C程序。最简单的程序是由若干顺序执行的语句 构成,这些语句可以是赋值语句、输入输出语句。 本章将介绍为编写简单的程序所必需的一些内容。 通过本章的学习,读者应该掌握以下内容: 赋值语句 数据输入输出的概念及在C语言中的实现 字符数据的输入输出 2024/10/28 格式输入与输出
2024/10/28 1 第3章 最简单的C程序设计 本章学习目标 在上一章介绍了程序中用到的一些基本要素 (常量、变量、运算符、表达式等),它们是构成 程序的基本成分。在第1章中已经介绍了几个简单 的C程序。最简单的程序是由若干顺序执行的语句 构成,这些语句可以是赋值语句、输入输出语句。 本章将介绍为编写简单的程序所必需的一些内容。 通过本章的学习,读者应该掌握以下内容: ⚫ 赋值语句 ⚫ 数据输入输出的概念及在C语言中的实现 ⚫ 字符数据的输入输出 ⚫ 格式输入与输出
3.1赋值语句 前已介绍,赋值语句是由赋值表达式加上一个分号构 成。由于赋值语句应用十分普遍,所以专门再讨论一下。 3.1.1相关知识 C语言的赋值语句比较简单也比较普遍,具有其他高 级语言的赋值语句的一切特点和功能。 3.1.2程序范例 程序3-1:输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长a、b、c能构成三角形。 从数学知识已知求三角形面积的公式为 2024/10/28
2024/10/28 2 3.1 赋值语句 前已介绍,赋值语句是由赋值表达式加上一个分号构 成。由于赋值语句应用十分普遍,所以专门再讨论一下。 3.1.1 相关知识 C语言的赋值语句比较简单也比较普遍,具有其他高 级语言的赋值语句的一切特点和功能。 3.1.2 程序范例 程序3-1:输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长a、b、c能构成三角形。 从数学知识已知求三角形面积的公式为
其中s=(a+b+c)/2,此程序3-1如下: #include main( float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2fb=%7.2f,c=%7.2f,s=%7.2fn",a,b,c,s; printf("area=%7.2fn",area); 2024/10/28
2024/10/28 3 其中s=(a+b+c)/2,此程序3-1如下: #include main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area);
运行情况如下: 3,4,64 a=3.00,b= 4.00,c=6.00,s=6.50 area= 5.33 程序说明:程序中第7行中sqrt0是求平方根的函数。由于要 调用数学函数库中的函数,必须在程序的开头加二条 #include-命令,把文件math.h包含到程序中。请注意,以 后凡在程序中要用到数学函数库中的函数,都应当包含 math.h头文件。 2024/10/28
2024/10/28 4 } 运行情况如下: 3,4,6↙ a= 3.00,b= 4.00,c= 6.00,s= 6.50 area= 5.33 程序说明:程序中第7行中sqrt()是求平方根的函数。由于要 调用数学函数库中的函数,必须在程序的开头加一条 #include命令,把文件math.h包含到程序中。请注意,以 后凡在程序中要用到数学函数库中的函数,都应当包含 math.h头文件
3.1.3知识归纳 (1)C语言中的赋值号“=”是一个运算符,在其他大 多数语言中赋值号不是运算符。 (2)对于赋值表达式与赋值语句的概念,其他多数 高级语言没有“赋值表达式”概念。作为赋值表达式可以 包括在其他表达式之中,例如: if ((a=b)>0)t=a; 按语法规定if后面的O内是一个条件,例如可以是: ifx>0)。现在在x的位置上换上一个赋值表达式“a=b”, 其作用是:先进行赋值运算(将b的值赋给a),然后判断 a是否大于0,如大于0,执行t=a。在if语句中“a=b”不是 赋值语句而是赋值表达式,这样写是合法的。如果写成: 2024/10/28
2024/10/28 5 3.1.3 知识归纳 (1)C语言中的赋值号“ =”是一个运算符,在其他大 多数语言中赋值号不是运算符。 (2)对于赋值表达式与赋值语句的概念,其他多数 高级语言没有“赋值表达式”概念。作为赋值表达式可以 包括在其他表达式之中,例如: if ((a=b)>0) t=a; 按语法规定if后面的( )内是一个条件,例如可以是: if(x>0).。现在在x的位置上换上一个赋值表达式“a=b” , 其作用是:先进行赋值运算(将b的值赋给a),然后判断 a是否大于0,如大于0,执行t=a。在if语句中“a=b”不是 赋值语句而是赋值表达式,这样写是合法的。如果写成:
if(a=b;)>0)t=a; 就错了。在条件中不能包含赋值语句。由此可以看 到,C把赋值语句和赋值表达式区别开来,增加了表达式 的种类,使表达式的应用几乎“无孔不入”,能实现其他 语言中难以实现的功能。 2024/10/28
2024/10/28 6 if ((a=b;)>0) t=a; 就错了。在if条件中不能包含赋值语句。由此可以看 到,C把赋值语句和赋值表达式区别开来,增加了表达式 的种类,使表达式的应用几乎“无孔不入”,能实现其他 语言中难以实现的功能
3.2字符数据输入输出 所谓输入输出是以计算机主机为主体而言的。从计算 机向外输出设备(如显示屏、打印机、磁盘等)输出数据 称为“输出”,从外部向输入设备(如键盘、磁盘、光盘、 扫描仪等)输入数据称为“输入” 2024/10/28
2024/10/28 7 3.2 字符数据输入输出 所谓输入输出是以计算机主机为主体而言的。从计算 机向外输出设备(如显示屏、打印机、磁盘等)输出数据 称为“输出”,从外部向输入设备(如键盘、磁盘、光盘、 扫描仪等)输入数据称为“输入”
3.2.1相关知识 C语言本身不提供输入输出语句,输入和输出操作是 由函数来实现的。在C标准函数库中提供了一些输入输出 函数,例如,printf函数和scanfi函数。读者在使用它们时, 千万不要误认为它们是C语言提供的“输入输出语句” printf和scanf不是C语言的关键字,而只是函数的名字。 实际上完全可以不用printf和scanf.这两个名字,而另外编 两个输入输出函数,用其他的函数名。C提供的函数以库 的形式存放在系统中,它们不是C语言文本中的组成部分。 2024/10/28
2024/10/28 8 3.2.1 相关知识 C语言本身不提供输入输出语句,输入和输出操作是 由函数来实现的。在C标准函数库中提供了一些输入输出 函数,例如,printf 函数和scanf函数。读者在使用它们时, 千万不要误认为它们是C语言提供的“输入输出语句” 。 printf 和scanf不是C语言的关键字,而只是函数的名字。 实际上完全可以不用printf 和scanf这两个名字,而另外编 两个输入输出函数,用其他的函数名。C提供的函数以库 的形式存放在系统中,它们不是C语言文本中的组成部分
在第1章中曾介绍,不把输入输出作为C语言提供的语 句的目的是使C语言编译系统简单,因为将语句翻译成二 进制的指令是在编译阶段完成的,没有输入输出语句就可 以避免在编译阶段处理与硬件有关的问题,可以使编译系 统简化,而且通用性强,可移植性好,对各种型号的计算 机都适用,便于在各种计算机上实现。各种版本的C语言 函数库是各计算机厂 2024/10/28
2024/10/28 9 在第1章中曾介绍,不把输入输出作为C语言提供的语 句的目的是使C语言编译系统简单,因为将语句翻译成二 进制的指令是在编译阶段完成的,没有输入输出语句就可 以避免在编译阶段处理与硬件有关的问题,可以使编译系 统简化,而且通用性强,可移植性好,对各种型号的计算 机都适用,便于在各种计算机上实现。各种版本的C语言 函数库是各计算机厂
在第1章中曾介绍,不把输入输出作为C语言提供的语 句的目的是使C语言编译系统简单,因为将语句翻译成二 进制的指令是在编译阶段完成的,没有输入输出语句就可 以避免在编译阶段处理与硬件有关的问题,可以使编译系 统简化,而且通用性强,可移植性好,对各种型号的计算 机都适用,便于在各种计算机上实现。各种版本的C语言 函数库是各计算机厂 2024/10/28 10
2024/10/28 10 在第1章中曾介绍,不把输入输出作为C语言提供的语 句的目的是使C语言编译系统简单,因为将语句翻译成二 进制的指令是在编译阶段完成的,没有输入输出语句就可 以避免在编译阶段处理与硬件有关的问题,可以使编译系 统简化,而且通用性强,可移植性好,对各种型号的计算 机都适用,便于在各种计算机上实现。各种版本的C语言 函数库是各计算机厂