第4章 顺序结构程序设计_第1页
第4章 顺序结构程序设计_第2页
第4章 顺序结构程序设计_第3页
第4章 顺序结构程序设计_第4页
第4章 顺序结构程序设计_第5页
已阅读5页,还剩117页未读, 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章顺序结构程序设计顺序结构程序设计 程序设计基础(C语言)2本章重点:本章重点: C C程序的基本结构;程序的基本结构;C C语句;数据的输入输出函语句;数据的输入输出函数数scanf()scanf()和和printf()printf()。本章难点:本章难点: 数据的输入输出函数数据的输入输出函数scanf()scanf()和和printf()printf()。 前面两章介绍了一些简单的算法、前面两章介绍了一些简单的算法、C C语言的语语言的语法,但孤立地学习语法是枯燥无味的,并且即使语法,但孤立地学习语法是枯燥无味的,并且即使语法学得再好,也不一定能写出很好的程序来,只有法学得再

2、好,也不一定能写出很好的程序来,只有把算法和语法紧密地结合起来,编写成能够运行的把算法和语法紧密地结合起来,编写成能够运行的程序,步步深入,由浅入深,才可以更好地学会编程序,步步深入,由浅入深,才可以更好地学会编写程序。写程序。第四章第四章 顺序结构程序设计顺序结构程序设计程序设计基础(C语言)3从结构化程序设计的角度来看,程序可以从结构化程序设计的角度来看,程序可以分为三种基本结构,即顺序结构、选择结分为三种基本结构,即顺序结构、选择结构和循环结构,这三种基本结构可以组成构和循环结构,这三种基本结构可以组成所有的各种复杂程序。所有的各种复杂程序。C C语言提供了多种语句来实现这些程序结语言提

3、供了多种语句来实现这些程序结构。本章介绍这些基本语句及其在顺序结构。本章介绍这些基本语句及其在顺序结构中的应用,使读者对构中的应用,使读者对C C程序有一个初步程序有一个初步的认识,为后面各章的学习打下基础。的认识,为后面各章的学习打下基础。第四章第四章 顺序结构程序设计顺序结构程序设计程序设计基础(C语言)4第四章第四章 顺序结构程序设计顺序结构程序设计4.1 顺序程序设计举例4.2 C语句4.4 本章小结4.3 数据的输入输出程序设计基础(C语言)5【例【例4.14.1】输入三角形的三边长,求三角形面】输入三角形的三边长,求三角形面积。积。解题思路解题思路:u本程序假设两边之和大于第三边的

4、条件本程序假设两边之和大于第三边的条件成立。成立。u关键是找到求三角形面积的公式关键是找到求三角形面积的公式4.1 4.1 顺序程序设计举例顺序程序设计举例程序设计基础(C语言)6解题思路:解题思路:已已知知三角形的三边长三角形的三边长a,b,ca,b,c,则该三角形的,则该三角形的面积公式为:面积公式为: 其中其中s=(a+b+c)/2s=(a+b+c)/2。 4.1 4.1 顺序程序设计举例顺序程序设计举例)()(csbsassarea程序设计基础(C语言)#include #include int main ( ) float a,b,c,s,area; printf(“输入三角形的三条

5、边:输入三角形的三条边:n“);scanf(“%f%f%f”,&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“三角形的面积为三角形的面积为%7.2fn,area); return 0; 计算计算s计算计算area输入输入a、b和和c的值的值程序设计基础(C语言)#include #include int main ( ) float a,b,c,s,area; printf(“输入三角形的三条边:输入三角形的三条边:n“);scanf(“%f%f%f”,&a,&b,&c); s=(a+b+c)/2; area=sqr

6、t(s*(s-a)*(s-b)*(s-c); printf(“三角形的面积为三角形的面积为%7.2fn,area); return 0; 数学函数,数学函数,计算计算平方根平方根调用数学函数调用数学函数加此行加此行程序设计基础(C语言)9【例【例4.24.2】输入圆的半径和圆柱的高,求底面】输入圆的半径和圆柱的高,求底面积、体积和表面积。积、体积和表面积。解题思路:解题思路:u圆的底面积是圆的底面积是* r2u体积是:体积是:* r2 *hu表面积是:表面积是:2* r2 +2*r*h。4.1 4.1 顺序程序设计举例顺序程序设计举例程序设计基础(C语言)#include #define PI

7、 3.141592int main( ) float r,h,ds,ms,v; printf(输入圆柱的半径输入圆柱的半径:); scanf(%f,&r); printf(输入圆柱的高输入圆柱的高:); scanf(%f,&h); ds=PI*r*r; ms=2*ds+2*PI*r*h; v=ds*h; printf(“底面积为底面积为%.2f, 表面积为表面积为%.2f, 体积为体积为 %.2fn,ds,ms,v); return 0;符号常量符号常量PI程序设计基础(C语言)11 【例【例4.34.3】从键盘输入大写字母,用小写字母】从键盘输入大写字母,用小写字母输出。输出。 解题思路:解

8、题思路:u关键是找到大、小写字母间的内在联系关键是找到大、小写字母间的内在联系u同一个字母,用小写表示的字符的同一个字母,用小写表示的字符的ASCII代码比用大写表示的字符的代码比用大写表示的字符的ASCII代码大代码大324.1 4.1 顺序程序设计举例顺序程序设计举例程序设计基础(C语言)#include int main() char c1,c2; printf(输入大写字母输入大写字母:); scanf(%c,&c1); printf(你输入的大写字母是:你输入的大写字母是:%cn,c1); c2=c1+32; printf(转换为小写是转换为小写是:%cn,c2); return 0

9、;输入输入c1用字符形式输出用字符形式输出用字符形式输出用字符形式输出程序设计基础(C语言)134.2 C4.2 C语句语句4.2.1 C语句概述4.2.2 最基本的语句赋值语句程序设计基础(C语言)14 从前面的例子可以看出,一个函数包含声从前面的例子可以看出,一个函数包含声明部分和执行部分,执行部分是由语句组明部分和执行部分,执行部分是由语句组成的。成的。语句的作用是向计算机系统发出操作指令,语句的作用是向计算机系统发出操作指令,以完成相应的功能。以完成相应的功能。C C程序结构如程序结构如下图下图所示。所示。4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)4.2.1 C

10、4.2.1 C语句概述语句概述程序设计基础(C语言)16程序的功能由执行语句实现的。程序的功能由执行语句实现的。C C语句可分为以下五类:语句可分为以下五类: (1) 1) 表达式语句表达式语句 (2) 2) 函数调用语句函数调用语句 (3) 3) 控制语句控制语句 (4) 4) 复合语句复合语句 (5) 5) 空语句空语句 4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)171.1.表达式语句:表达式语句:u表达式语句由表达式加上分号表达式语句由表达式加上分号“;”组成。组成。u 其一般形式为:其一般形式为: 表达式表达式; ;u例如:例如:x=y+z; 赋值语句赋值语句。

11、 y+z; 加法运算语句,无实际意义加法运算语句,无实际意义。 i+; 自增自增1 1语句,语句,i i值增值增1 1。4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)182.2.函数调用语句:函数调用语句:u由函数名、实际参数加上分号由函数名、实际参数加上分号“;”组成。组成。u其一般形式为:其一般形式为: 函数名函数名( (实际参数表实际参数表););u如:如: printf (This is a C program! ); scanf(%d,&a); c=max(a,b);4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)19 3.3.控制语句:控制语句

12、:u控制语句用于控制程序的流程,以实现控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语程序的各种结构方式。它们由特定的语句定义符组成。句定义符组成。4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)20 3.3.控制语句:控制语句:uC语言有九种控制语句语言有九种控制语句,可分成以下三可分成以下三类:类: (1) (1) 条件判断语句:条件判断语句:ifif语句、语句、switchswitch语语 句;句; (2) (2) 循环执行语句:循环执行语句:do whiledo while语句、语句、 whilewhile语句、语句、forfor语句;语句; (3

13、) (3) 转向语句:转向语句:breakbreak语句、语句、continuecontinue语语 句、句、gotogoto语句、语句、returnreturn语句。语句。4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)21 4 4. .复合复合语句:语句:u把多个语句用括号把多个语句用括号括起来组成的括起来组成的 一个语句称一个语句称复合语句。复合语句。u例如:例如: x=y+z; a=b+c; printf(%d%d ,x,a); 是一条复合语句。是一条复合语句。u复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;”“;”结尾,结尾,在括号在括号“”“

14、”外不能加分号外不能加分号。 4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)225. 5. 空语句:空语句:u只有分号只有分号“;”组成的语句称为空语句。空组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。语句可用来作空循环体。u例如例如: while(getchar()!=n); 本语句的功能是只要从键盘输入的字符本语句的功能是只要从键盘输入的字符不是回车则重新输入不是回车则重新输入, ,循环体为空语句。循环体为空语句。4.2.1 C4.2.1 C语句概述语句概述程序设计基础(C语言)234.2.24.2

15、.2最基本的语句最基本的语句赋值语句赋值语句在在C C程序中,最常用的语句是:程序中,最常用的语句是:u赋值语句赋值语句u输入输出语句输入输出语句其中最基本的是赋值语句其中最基本的是赋值语句程序设计基础(C语言)244.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句赋值运算符为赋值运算符为“=”=”u作用是将一个数据赋给一个变量作用是将一个数据赋给一个变量u也可以将一个表达式的值赋给一个也可以将一个表达式的值赋给一个变量变量程序设计基础(C语言)25【例【例 4.4 4.4】给】给a,ba,b两个变量赋值,然后输出它两个变量赋值,然后输出它们的和。们的和。解题思路:先定义解题思路:先

16、定义 a a,b b,c c 三个变量,然三个变量,然后给后给a a和和b b赋值,再把他们相加起来,结果赋赋值,再把他们相加起来,结果赋给变量给变量c,c,再调用库函数输出再调用库函数输出c c的值。的值。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)#include int main() int a,b,c;a=5; b=6; c=a+b; printf(c=%dn,c); return 0;把把5赋值给赋值给a把把6赋值给赋值给b把把a+b的值赋给的值赋给c4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)4.2.24.

17、2.2最基本的语句最基本的语句赋值语句赋值语句赋值表达式赋值表达式u一般形式为一般形式为: 变量变量 赋值运算符赋值运算符 表达式表达式u对赋值表达式求解的过程:对赋值表达式求解的过程:l求赋值运算符求赋值运算符右侧右侧的的“表达式表达式”的值的值l赋给赋值运算符赋给赋值运算符左侧左侧的变量的变量程序设计基础(C语言) (lvalue) : 赋值运算符左侧的标识符赋值运算符左侧的标识符u 变量可以作为左值变量可以作为左值;u而表达式就不能作为左值而表达式就不能作为左值(如如a+b);u常量也不能作为左值常量也不能作为左值 (rvalue) :出现在赋值运算符右侧的表达式出现在赋值运算符右侧的表

18、达式 左值也可以出现在赋值运算符右侧,因而左左值也可以出现在赋值运算符右侧,因而左值都可以作为右值。值都可以作为右值。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句赋值表达式赋值表达式u赋值表达式赋值表达式“a=3*5”的值为的值为15,对表,对表达式求解后,变量达式求解后,变量a的值和表达式的值都的值和表达式的值都是是15u“a=(b=5)”和和“a=b=5”等价等价u“a=b”和和“b=a”含义不同含义不同在赋值表达式的尾部加上一个分号,就构在赋值表达式的尾部加上一个分号,就构成了赋值语句成了赋

19、值语句赋值表达式的值:被赋值变量的值。赋值表达式的值:被赋值变量的值。程序设计基础(C语言)30使用赋值语句时需要注意以下几点:使用赋值语句时需要注意以下几点: (1) (1)在赋值运算符在赋值运算符“=”“=”的左边只能是变量,的左边只能是变量,可以在赋值符可以在赋值符“=”“=”之前加上其他运算符之前加上其他运算符。 例如:例如:a=6+1; a+=5; a*=y+2; 4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)314.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句x=x+nx=x-nx=x*nx=x/nx=x%nx + = nx - =

20、nx * = nx / = nx% = n算术运算与赋算术运算与赋值运算相结合值运算相结合X与与n均均为整数为整数 例例: :程序设计基础(C语言)32使用赋值语句时需要注意以下几点使用赋值语句时需要注意以下几点: (2) (2)在赋值运算符在赋值运算符“=”“=”右边的表达式也可以右边的表达式也可以又是一个赋值表达式又是一个赋值表达式, ,从而形成嵌套的情形从而形成嵌套的情形, ,一般形式为一般形式为: 例如:例如:a=b=c=5; 按照赋值运算符的右接合性,上述语句实际按照赋值运算符的右接合性,上述语句实际上等效于:上等效于:c=5; b=c; a=b;4.2.24.2.2最基本的语句最基

21、本的语句赋值语句赋值语句程序设计基础(C语言)334.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句赋值表达式赋值表达式也可以包含复合的赋值运算符。也可以包含复合的赋值运算符。 如:如:a+=a-=a*a(如(如a12)分析分析:此赋值表达式的求解步骤如下此赋值表达式的求解步骤如下 先进行先进行“a-a*a”的运算,的运算, 它相当于它相当于a=a-a*a,a的值为的值为12-144132。再进行再进行“a+=-132”的运算,相当于的运算,相当于a=a+(-132),a的值为的值为-132-132=-264。程序设计基础(C语言)34(3)(3)注意在变量说明中给变量赋初值的操作和

22、注意在变量说明中给变量赋初值的操作和赋值语句的区别。赋值语句的区别。u给变量赋初值是变量声明的一部分,只给变量赋初值是变量声明的一部分,只能出现在函数的声明部分,赋初值后的变能出现在函数的声明部分,赋初值后的变量与其后的其他同类变量之间仍必须用逗量与其后的其他同类变量之间仍必须用逗号间隔;号间隔;u而赋值语句则必须出现在函数的执行部而赋值语句则必须出现在函数的执行部分,并且一定要用分号结尾。分,并且一定要用分号结尾。 4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)35(3)(3)注意在变量说明中给变量赋初值的操作和注意在变量说明中给变量赋初值的操作和赋值语句

23、的区别。例如:赋值语句的区别。例如:int main( ) int x=3,y=4,m,n; /*变量赋初值变量赋初值*/ m=x+y; /*赋值语句赋值语句*/ n=x-y; /*赋值语句赋值语句*/ return 0;4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)注意注意:变量未被赋值前,值为未知。变量未被赋值前,值为未知。 对变量赋值过程是对变量赋值过程是“覆盖覆盖”过程,用新值过程,用新值去替换旧。去替换旧。读出变量的值,该变量保持不变。读出变量的值,该变量保持不变。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)变

24、量赋值过程变量赋值过程 int d,e,f; d e f d e f未赋值前未赋值前执行执行 d=7执行执行 e=d 执行执行 f=d+e执行执行 d=d+1-123497234316072343160770771487144.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)38(4)(4)注意赋值表达式和赋值语句的区别。注意赋值表达式和赋值语句的区别。u赋值表达式是一种表达式,它可以出现赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,在任何允许表达式出现的地方,u而赋值语句则不能。而赋值语句则不能。u例如例如lif(x=y+5)0) z=x; /合

25、法合法lif(x=y+5;)0) z=x; /非法非法4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句 将赋值表达式作为表达式的一种,使赋值将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、以表达式形式出现在其他语句(如输出语句、循环语句等)中循环语句等)中 如:如:printf(%d,a=b); 分析分析:如果如果b b的值为的值为3 3, 则输出则输出a a的值的值( (也是也是表达式表达式a=b

26、a=b的值的值) )为为3 3。在一个语句中完成了。在一个语句中完成了赋值和输出双重功能。赋值和输出双重功能。程序设计基础(C语言)40(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u如果赋值运算符两侧的数据类型一致,如果赋值运算符两侧的数据类型一致,赋值不会出现问题;赋值不会出现问题;u如果类型不同,但两侧的数据类型都是如果类型不同,但两侧的数据类型都是算术类型时,系统会自动进行类型转换。算术类型时,系统会自动进行类型转换。u定义变量时要防止数据溢出。定义变量时要防止数据溢出。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)41(5) (5) 赋值

27、过程中的类型转换赋值过程中的类型转换u将浮点型赋给整型变量,会舍掉小数部将浮点型赋给整型变量,会舍掉小数部分(不是四舍五入)分(不是四舍五入)u例如例如i为整数,执行为整数,执行“i=3.56”的结果是的结果是i的的值为值为3,以整数形式存储在整型变量中。,以整数形式存储在整型变量中。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)42(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u将整型数据赋给浮点型变量,整数部分不变,将整型数据赋给浮点型变量,整数部分不变,但是会在末尾小数部分加上若干个但是会在末尾小数部分加上若干个“0”。u将将23赋给赋给fl

28、oat变量变量f,即执行,即执行f=23,先将,先将23转换成转换成23.00000,再存储在,再存储在f中。中。u将将23赋给赋给double型变量型变量d,即执行,即执行d=23,则将则将23补足有效位数字为补足有效位数字为23.00000000000000,然后以双精度浮点,然后以双精度浮点数形式存储到变量数形式存储到变量d中。中。 4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)43(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u将一个将一个double型数据赋给型数据赋给float变量时,截取其变量时,截取其前面前面7位有效数字,存放到位有

29、效数字,存放到float变量的存储单元变量的存储单元(4个字节)中,会造成精度降低。个字节)中,会造成精度降低。u但应注意数值范围不能溢出。但应注意数值范围不能溢出。如如:float f;double d=123.456789e100; f=d; 就出现溢出的错误。就出现溢出的错误。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)44(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u如果将一个如果将一个float型数据赋给型数据赋给double变量变量时,数值不变,有效位数扩展到时,数值不变,有效位数扩展到16位,在位,在内存中以内存中以8个字节存储。

30、不会造成精度降个字节存储。不会造成精度降低。低。u将将char类型赋给整型,把字符的类型赋给整型,把字符的ASCII码码赋给整型变量。赋给整型变量。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)45(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u将将long类型赋给类型赋给int/char类型,或者类型,或者int类型赋给类型赋给char类型,只将低字节部分赋给该变量,高字节部类型,只将低字节部分赋给该变量,高字节部分会舍掉。分会舍掉。u例如例如i = 289; /* 已定义已定义i为短整型变量为短整型变量 */ c = a; /* 已定义已定义c

31、为字符变量为字符变量 */c = i; /* 将占将占2字节的字节的short型数据赋给型数据赋给char型变量型变量 */4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句要避免进行这种发生失真的赋值!要避免进行这种发生失真的赋值!程序设计基础(C语言)46(5) (5) 赋值过程中的类型转换赋值过程中的类型转换u如果有符号数赋给长度相同的无符号变如果有符号数赋给长度相同的无符号变量,例如量,例如int类型赋给类型赋给unsigned int类型的类型的变量,那么连符号位也一起传送。变量,那么连符号位也一起传送。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基

32、础(C语言)47【例【例4.54.5】有符号整数赋给无符号整型变量。】有符号整数赋给无符号整型变量。#includeint main() unsigned a; int b; b=-1; a=b; printf(%un,a); return 0;4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)48结果分析结果分析:u在在vc+6.0环境中,环境中,int占占4字节,字节,-1在内存中在内存中以二进制形式存放,是以二进制形式存放,是32个个1,如果当作无符,如果当作无符号数,就是号数,就是4294967295。u将无符号数赋给相同长度的有符号整型变量,将无符号数

33、赋给相同长度的有符号整型变量,如果如果int占用占用2个字节,那么个字节,那么unsigned int表示表示数的范围是数的范围是065535,而,而int类型表示数的范类型表示数的范围是围是-3276832767,因此如果将,因此如果将3276865535的数赋给的数赋给int(2字节字节int类型)类型,将类型)类型,将会出错。会出错。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)49类型转换比较复杂,在实际编程中只需要类型转换比较复杂,在实际编程中只需要掌握每种数据类型表示数据的范围,在编掌握每种数据类型表示数据的范围,在编程时候能估计数的值的大致范围

34、,使用合程时候能估计数的值的大致范围,使用合适类型的变量存储就可以了适类型的变量存储就可以了。4.2.24.2.2最基本的语句最基本的语句赋值语句赋值语句程序设计基础(C语言)50几乎每个几乎每个C C程序都包含输入输出;程序都包含输入输出;输入输出是程序中最基本的操作之一。输入输出是程序中最基本的操作之一。4.3 4.3 数据的输入输出数据的输入输出程序设计基础(C语言)51所谓输入输出是以计算机主机为主体而言的所谓输入输出是以计算机主机为主体而言的u从计算机向输出设备从计算机向输出设备(如显示器、打印机如显示器、打印机等等)输出数据称为输出;输出数据称为输出;u从输入设备(如键盘、磁盘、光

35、盘、扫从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入。描仪等)向计算机输入数据称为输入。4.3 4.3 数据的输入输出数据的输入输出程序设计基础(C语言)52C语言本身不提供输入输出语句,输入和输语言本身不提供输入输出语句,输入和输出操作是由出操作是由C C标准函数库中的函数来实现。标准函数库中的函数来实现。printf和和scanf不是不是语言的关键字,而只语言的关键字,而只是库函数的名字。是库函数的名字。putchar、getchar、puts、gets。4.3 4.3 数据的输入输出数据的输入输出程序设计基础(C语言)53在使用输入输出函数时,要在程序文件的开在使用输

36、入输出函数时,要在程序文件的开头用预处理指令把相关头文件放在本程序中头用预处理指令把相关头文件放在本程序中#include 或或#include stdio.h4.3 4.3 数据的输入输出数据的输入输出程序设计基础(C语言)54 【例【例 4.6 4.6】 求求axax2 2+bx+c=0 +bx+c=0 方程的根。方程的根。a a、b b、c c由键盘输入由键盘输入设设a0a0且且b b2 2-4ac0-4ac0。 4.3 4.3 数据的输入输出数据的输入输出程序设计基础(C语言)55解题思路:首先要知道求方程式的根的方法。解题思路:首先要知道求方程式的根的方法。由数学知识已知:如果由数学

37、知识已知:如果b b2 2-4ac0-4ac0,则一元二,则一元二次方程有两个实根:次方程有两个实根:aacbbx2421aacbbx24224.3 4.3 数据的输入输出数据的输入输出abp2aacbq242若记若记qpx1qpx2程序设计基础(C语言)#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx

38、2=%7.2fn,x1,x2); return 0;程序中程序中调用数学函数调用数学函数sqrt输入输入a,b,c的值的值程序设计基础(C语言)#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;输入的是双输入的是双精度型实数精度型实数程序设计基础(C语言

39、)#include #include int main ( ) double a,b,c,disc,x1,x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;要求输入要求输入3个实数个实数自动自动转成实数转成实数后赋给后赋给a,b,c程序设计基础(C语言)#include #include int main ( ) double a,b,c,disc,x1,

40、x2,p,q; scanf(%lf%lf%lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2fn,x1,x2); return 0;输出输出数据占数据占7列,其中小数占列,其中小数占2列列程序设计基础(C语言)604.3 4.3 数据的输入输出数据的输入输出4.3.1 格式输出函数printf()4.3.2 格式输入函数scanf()4.3.3 字符输出函数putchar()4.3.4 字符输入函数getchar()程序设计基础(C语言

41、)61printf是向屏幕输出若干个任意类型的数据。是向屏幕输出若干个任意类型的数据。它是格式输出函数,使用时必须指定格式。它是格式输出函数,使用时必须指定格式。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()printf函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);格式声明格式声明程序设计基础(C语言)printf函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);普通

42、字符普通字符4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)printf函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);可以是常量、变量或表达式可以是常量、变量或表达式4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)642.2.格式字符格式字符 格式声明中的一般形式可以表示为:格式声明中的一般形式可以表示为: % %附加字符附加字符 格式字符格式字符 表表4.14.1、4.24.2列出了列出

43、了printfprintf函数中用到的格函数中用到的格式字符和附加字符。式字符和附加字符。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)654.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)664.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)67格式字符的具体信息:格式字符的具体信息: (1 1)d d格式符。用来输出一个有符号的十进制整数。格式符。用来输出一个有符号的十进制整数。 %d: %d:按十进制整型数据的实际长度输出。按十进

44、制整型数据的实际长度输出。 %md:m %md:m为指定的输出字段的宽度。如果数据的为指定的输出字段的宽度。如果数据的位数小于,则左端补以空格,若大于位数小于,则左端补以空格,若大于m m,则按实,则按实际位数输出。际位数输出。 例例: : printf(%4d,%4d,a,b); 若若a123,b=12345,则输出结果为,则输出结果为 123,123454.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)68格式字符的具体信息:格式字符的具体信息: (1 1)d d格式符。用来输出一个有符号的十进制整数。格式符。用来输出一个有符号的十进制整

45、数。 %ld: %ld:输出长整型数据。输出长整型数据。 例例: : long a=135790;/ /* * 定义定义a a为长整型变量为长整型变量* */ / printf(%ld,a);4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)69 (2) o (2) o格式符。以八进制整数形式输出。格式符。以八进制整数形式输出。u输出的数值不带符号,符号位也一起作为八进输出的数值不带符号,符号位也一起作为八进制数的一部分输出。制数的一部分输出。 例:例:int a=-1; printf(%d,%o,a,a); u-1在内存单元中的存放形式(以

46、补码形式存放)在内存单元中的存放形式(以补码形式存放)如下:如下: 输出为:输出为:-1,377777777774.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)70 (3) (3)格式符。以十六进制数形式输出整数。同样格式符。以十六进制数形式输出整数。同样不会出现负的十六进制数。不会出现负的十六进制数。 例:例: int a=-1; printf(%x,%o,%d,a,a,a);); 输出结果为输出结果为: : ffffffff,37777777777,-1u可以用可以用“%lx”输出长整型数,也可以指定输输出长整型数,也可以指定输出字段的

47、宽度出字段的宽度 例例: “%12x”: “%12x”4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)71 (4)u (4)u格式符。用来输出格式符。用来输出unsignedunsigned型数据。型数据。u一个有符号整数(一个有符号整数(int型)也可以用型)也可以用%u格格式输出;式输出;u一个一个unsigned型数据也可以用型数据也可以用%d格式格式输出输出uunsigned数据也可用数据也可用%o或或%x格式输出。格式输出。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)72

48、(5)c (5)c格式符。用来输出一个字符。格式符。用来输出一个字符。 如:如:chard=a; printf(%c,d); 运行时输出字符运行时输出字符 a 。u一个整数,只要它的值在一个整数,只要它的值在0127范围内,可以范围内,可以用用“%c”使之按字符形式输出,在输出前,系使之按字符形式输出,在输出前,系统会将该整数作为统会将该整数作为ASCII码转换成相应的字符;码转换成相应的字符;u一个字符数据也可以用整数形式输出。一个字符数据也可以用整数形式输出。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)73 【例【例4.74.7】

49、字符数据的输出。字符数据的输出。#includeint main() char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); return 0;4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)74(6)s(6)s格式符。输出字符串。格式符。输出字符串。 %s%s。例如:。例如: printf(%s,china); 输出字符串输出字符串“china”(不包括双引号)。(不包括双引号)。%ms%ms,输出的字符串占,输出的字符串占m m列,若串长大于列,若串长大于m m,则全,则全

50、部输出,若串长小于部输出,若串长小于m m,则左补空格。,则左补空格。 %-ms%-ms,若串长小于,若串长小于m m,字符串向左靠,右补空格。,字符串向左靠,右补空格。若串长大于若串长大于m m,则全部输出。,则全部输出。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)75(7 7)f f格式符。用来输出实数(包括单精度、双精格式符。用来输出实数(包括单精度、双精度和长双精度),以小数形式输出,有以下几种度和长双精度),以小数形式输出,有以下几种用法:用法: %f %f。不指定字段宽度,由系统自动指定字段宽。不指定字段宽度,由系统自动指定

51、字段宽度,使整数部分全部输出,并输出度,使整数部分全部输出,并输出6 6位小数。位小数。 如如 double a=1.0; printf(”%fn”,a/3);4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)76(7 7)f f格式符。用来输出实数(包括单精度、双精格式符。用来输出实数(包括单精度、双精度和长双精度),以小数形式输出,有以下几种度和长双精度),以小数形式输出,有以下几种用法:用法:%m.nf%m.nf。指定输出的数据共占。指定输出的数据共占m m列,其中有列,其中有n n位小位小数。如果数值长度小于数。如果数值长度小于m m

52、,则左端补空格。,则左端补空格。printf(%20.15fn,1.0/3); printf(%.0fn”,10000/3.0); 4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)77【例【例4.84.8】 输出实数时的有效位数。输出实数时的有效位数。#include int main() float x,y; x=11111.111; y=22222.222; printf(%fn,x+y); return 0;4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)78(7 7)f f格式符

53、。用来输出实数(包括单精度、格式符。用来输出实数(包括单精度、双精度和长双精度),以小数形式输出:双精度和长双精度),以小数形式输出:ufloat型数据只能保证型数据只能保证6位有效数字位有效数字udouble型数据能保证型数据能保证15位有效数字位有效数字u计算机输出的数字不都是绝对精确有效计算机输出的数字不都是绝对精确有效的。的。 4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)79(7 7)f f格式符。用来输出实数(包括单精度、格式符。用来输出实数(包括单精度、双精度和长双精度),有以下几种用法:双精度和长双精度),有以下几种用法:

54、%-m.nf%-m.nf与与%m.nf%m.nf基本相同,只是使输出的基本相同,只是使输出的数值向左端靠,右端补空格。数值向左端靠,右端补空格。 4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)80 (8)e (8)e格式符。以指数形式输出实数。格式符。以指数形式输出实数。 %e %e。不指定输出数据所占的宽度和数字部分的。不指定输出数据所占的宽度和数字部分的小数位数。小数位数。uVC+给出小数位数为位,指数部分占给出小数位数为位,指数部分占5列列 小数点前必须有而且只有小数点前必须有而且只有1 1位非零数字位非零数字 例例: : prin

55、tf(%e,123.456); 输出:输出: 1.234560 e+002 6 6列列 5 5列列4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)81(8)e(8)e格式符。以指数形式输出实数。格式符。以指数形式输出实数。 %m.ne %m.ne和和%-m.ne%-m.ne。m m、n n和和“”字符的含字符的含义与前相同。义与前相同。u此处此处n指拟输出的数据的小数部分(又称指拟输出的数据的小数部分(又称尾数)的小数位数。尾数)的小数位数。u如:如: printf(”%13.2e”,123.456);输出:输出: 1.23e+002 (前

56、面有前面有4个空格个空格)4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)82(9)g(9)g格式符。用来输出浮点数,它根据数值格式符。用来输出浮点数,它根据数值的大小,自动选的大小,自动选f f格式或格式或e e格式(选择输出时格式(选择输出时占宽度较小的一种),且不输出无意义的零。占宽度较小的一种),且不输出无意义的零。例例: :若若,则,则printf(“%f%e%g”,f,f,f););输出如下:输出如下:123.468000 1.234680e+002 123.468 10 10列列 1313列列 1010列列4.3.1 4.3.

57、1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)83除了除了X X,E E,G G外,其他格式字符必须用小写。外,其他格式字符必须用小写。可以在可以在printfprintf函数中的函数中的“格式控制格式控制”字符串字符串中包含转义字符。中包含转义字符。一个格式说明必须以一个格式说明必须以“%”“%”开头,以格式字开头,以格式字符之一为结束,中间可以插入附加格式字符。符之一为结束,中间可以插入附加格式字符。若想输出若想输出% %,则应该在格式控制字符串中用,则应该在格式控制字符串中用连续两个连续两个% %表示。表示。4.3.1 4.3.1 格式输出函数格式输出

58、函数printf()printf()程序设计基础(C语言)此外,在使用此外,在使用printfprintf函数时还要注意以下几点:函数时还要注意以下几点: 1 1、格式控制字符串后面表达式的个数一般要与格、格式控制字符串后面表达式的个数一般要与格式控制字符串中的格式控制符的个数相等。式控制字符串中的格式控制符的个数相等。 2 2、表达式的实际数据类型要与格式转换符所表示、表达式的实际数据类型要与格式转换符所表示的类型相符,的类型相符,printfprintf函数不会进行不同数据类型函数不会进行不同数据类型之间的自动转换。像整型数据不可能自动转换成之间的自动转换。像整型数据不可能自动转换成浮点型

59、数据,浮点型数据也不可能自动转换成整浮点型数据,浮点型数据也不可能自动转换成整型数据。型数据。4.3.1 4.3.1 格式输出函数格式输出函数printf()printf()程序设计基础(C语言)85scanfscanf函数称为格式输入函数,即按用户指函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量定的格式从键盘上把数据输入到指定的变量之中。之中。scanfscanf函数的一般形式为:函数的一般形式为: scanf(格式控制格式控制,地址表列地址表列) 4.3.2 4.3.2 格式输入函数格式输入函数scanf()scanf()含义同含义同printf函数函数程序设计基础

60、(C语言)86scanfscanf函数的一般形式为函数的一般形式为: scanf(格式控制格式控制,地址表列地址表列)应该把变量的值和变量的地址这两个不同的应该把变量的值和变量的地址这两个不同的概念区别开来。概念区别开来。变量的地址是变量的地址是C编译系统分配的,用户不必编译系统分配的,用户不必关心具体的地址是多少。关心具体的地址是多少。 4.3.2 4.3.2 格式输入函数格式输入函数scanf()scanf()可以是变量的地址,或字可以是变量的地址,或字符串的首地址符串的首地址程序设计基础(C语言)87变量的地址和变量值的关系如下:变量的地址和变量值的关系如下:u在赋值表达式中给变量赋值,

温馨提示

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

评论

0/150

提交评论