第三章 顺序结构ppt课件.ppt

上传人:春哥&#****71; 文档编号:17070333 上传时间:2022-05-21 格式:PPT 页数:57 大小:572.50KB
返回 下载 相关 举报
第三章 顺序结构ppt课件.ppt_第1页
第1页 / 共57页
第三章 顺序结构ppt课件.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《第三章 顺序结构ppt课件.ppt》由会员分享,可在线阅读,更多相关《第三章 顺序结构ppt课件.ppt(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第三章 顺序结构第三章第三章 顺序结构程序设计顺序结构程序设计u C语句概述语句概述u C语言中数据的输入与输出语言中数据的输入与输出u 顺序结构程序设计举例顺序结构程序设计举例3.1 C语句概述一个一个C C程序可以由一个或多个源程序文件组成的,一程序可以由一个或多个源程序文件组成的,一个源程序文件就是一个程序模块,个源程序文件就是一个程序模块,C C语言编译时以程序模语言编译时以程序模块为单位依次进行的。一个源程序文件中可以包括三个部块为单位依次进行的。一个源程序文件中可以包括三个部分,即分,即编译预处理指令编译预处理指令、全局声明全局声明和和若干个函数若干个函数,每个函,每个函数由函数头

2、和函数体组成,函数体又是由数由函数头和函数体组成,函数体又是由数据声明部分数据声明部分和和执行语句执行语句组成的。组成的。C C程序结构如图程序结构如图: :C程序程序源程序文件源程序文件1 1源程序文件源程序文件2 2源程序文件源程序文件n预处理命令预处理命令函数函数1函数函数n函数首部函数首部函数体函数体数据声明数据声明执行语句执行语句数据声明数据声明C语句分为以下5类。1)表达式语句:由表达式加上分号)表达式语句:由表达式加上分号“;”构成。构成。例如:例如:x=9 /*赋值表达式赋值表达式*/ x=9; /*赋值语句赋值语句*/虽然理论上任何表达式都可以加上分号而成为语句,但是虽然理论

3、上任何表达式都可以加上分号而成为语句,但是在实际应用中,应注意表达式语句的实际作用。在实际应用中,应注意表达式语句的实际作用。例如:例如:a+b; 该表达式语句执行了求该表达式语句执行了求a加加b的和,但是计算完后没有进行的和,但是计算完后没有进行任何操作,相当于做了一个空的任何操作,相当于做了一个空的a和和b的求和运算。的求和运算。x=a+b;该赋值表达式语句将该赋值表达式语句将a和和b的求和结果赋值给了变量的求和结果赋值给了变量x。2)函数调用语句:由函数调用(函数表达式)加上)函数调用语句:由函数调用(函数表达式)加上分号分号“;”组成。组成。其一般形式为:其一般形式为:函数名函数名(实

4、际参数表实际参数表);例如:例如: printf(C Program); printf(C Program)是一个函数调用(函数表达是一个函数调用(函数表达式),加上一个分号后就成为函数调用语句。该语式),加上一个分号后就成为函数调用语句。该语句的功能是输出字符串句的功能是输出字符串“C Program”。 3)控制语句:用于控制程序的执行流程,以实现程序的各种结)控制语句:用于控制程序的执行流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。构方式。它们由特定的语句定义符组成。语言有九种控制语句。可分成以下三类:语言有九种控制语句。可分成以下三类: 选择结构控制语句:选择结构控制语句

5、: if( )elseswitch 循环结构控制语句:循环结构控制语句: while( )do while( ) for( ) 转向语句:转向语句: breakcontinuegoto return4)复合语句:把一组语句(包括对数据的定义和声明)用一对花)复合语句:把一组语句(包括对数据的定义和声明)用一对花括号括号 括起来组成的一个语句,括起来组成的一个语句,在逻辑上看成一个整体,称为复在逻辑上看成一个整体,称为复合语句。合语句。例如:例如: int x; /*定义整型变量x*/ x=y+z; /*赋值语句*/ a=b+c; /*赋值语句*/ printf(%d%d,x,a);/*函数调用

6、语句*/注意:注意:复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;”结尾,在右花结尾,在右花括号括号“”外不能加分号。复合语句常用于选择结构或循环结构中,外不能加分号。复合语句常用于选择结构或循环结构中,此时程序需要将一组语句当成一个整体来看待。此时程序需要将一组语句当成一个整体来看待。 5)空语句:仅有一个分号空语句:仅有一个分号“;”组成的语句称为空语句。空语句组成的语句称为空语句。空语句是什么也不执行的语句。那它有什么作用呢?它在程序中可以用来是什么也不执行的语句。那它有什么作用呢?它在程序中可以用来作为流程的转向点(流程从程序其他地方转到此语句处),也可用作为流程

7、的转向点(流程从程序其他地方转到此语句处),也可用来构成空循环体(循环体是空语句,表示循环体什么也不做)。来构成空循环体(循环体是空语句,表示循环体什么也不做)。例如:例如:while(getchar( )!=n); 该循环体中的语句为空语句。其功能是,从键盘连续读入字符,直该循环体中的语句为空语句。其功能是,从键盘连续读入字符,直至遇到第一个回车符为止。至遇到第一个回车符为止。3.1.2 赋值语句 赋值语句是由赋值表达式加上一个分号构成。赋值语句是由赋值表达式加上一个分号构成。例如例如:a=10+i:a=10+i* *f-100/5;f-100/5; a=b;a=b;在在C程序中,用得最多的

8、语句是赋值语句和函数调用程序中,用得最多的语句是赋值语句和函数调用语句。语句。在赋值语句的使用中需要注意以下几点:在赋值语句的使用中需要注意以下几点: 1)由于在赋值符)由于在赋值符“=”右边的表达式还可以是一个赋值表达式,因右边的表达式还可以是一个赋值表达式,因此,变量此,变量=(变量变量=表达式表达式);是成立的,从而形成嵌套的情形。其;是成立的,从而形成嵌套的情形。其展开之后的一般形式为:展开之后的一般形式为:变量变量=变量变量=表达式;表达式;例如:例如:a=b=c=d=e=5+2*3; 按照赋值运算符的右结合性,实际上等效于:按照赋值运算符的右结合性,实际上等效于:e=5+2*3;

9、d=e; c=d; b=c; a=b;2)变量定义时给变量赋初值和赋值语句的区别:给变量赋)变量定义时给变量赋初值和赋值语句的区别:给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同初值是变量说明的一部分,赋初值后的变量与其后的其它同类型变量之间必须用逗号类型变量之间必须用逗号“,”间隔,而赋值语句则必须用间隔,而赋值语句则必须用分号分号“;”结尾。结尾。例如:例如:int a=5,b,c;b=8;c=12;变量变量a是在其定义时被赋予初始值是在其定义时被赋予初始值5,而变量,而变量b定义时没有初定义时没有初始值(或者说其值不确定),而是在其后的赋值语句中进行始值(或者说其值不确定)

10、,而是在其后的赋值语句中进行赋值的。赋值的。 3)变量定义时,不允许嵌套给多个变量赋初值。)变量定义时,不允许嵌套给多个变量赋初值。例如:例如: int a=b=c=5; /*错误错误*/int a=5, b=5, c=5; /*正确正确*/4)赋值表达式和赋值语句的区别:赋值语句属于表达式语句,赋)赋值表达式和赋值语句的区别:赋值语句属于表达式语句,赋值表达式既然是一种表达式,那么它就可以出现在其他表达式之值表达式既然是一种表达式,那么它就可以出现在其他表达式之中。中。例如:例如: if(x=y+5)0) z=x;按一般理解,按一般理解,if后面的括号内应该是一个后面的括号内应该是一个“条件

11、条件”。例如:例如: if(x0) z=x;而实际上,而实际上,if后面的语法要求只要是表达式即可,不局限于条件。后面的语法要求只要是表达式即可,不局限于条件。如果写成如果写成 if(x=y+5;)0) z=x;就错了,因为就错了,因为x=y+5;已经是语句,而不是表达式了。已经是语句,而不是表达式了。注意:注意:if (x=y+5)0) 这样的语句虽然是符合语法要求的,但是该这样的语句虽然是符合语法要求的,但是该形式有其限定的应用场合形式有其限定的应用场合。3.2 C语言中数据的输入与输出 3.2.1 数据输入输出的概念及在数据输入输出的概念及在C语言中的实现语言中的实现 (1)(1)所谓输

12、入输出是以计算机主机为主体而言的。从计算机向所谓输入输出是以计算机主机为主体而言的。从计算机向外部输出设备输出数据称为输出,从输入设备向计算机输外部输出设备输出数据称为输出,从输入设备向计算机输入数据称为输入。入数据称为输入。(2)C(2)C语言本身不提供输入输出语句,输入和输出操作是由库函语言本身不提供输入输出语句,输入和输出操作是由库函数来实现的。数来实现的。例如:例如:printf, scanfprintf, scanf。(3)(3)在使用系统库函数时,要在源程序文件的开头用预编译命在使用系统库函数时,要在源程序文件的开头用预编译命令令“#include”#include”把有关的头文件

13、包含到本程序中。把有关的头文件包含到本程序中。 如如 #include #include 或或 #include stdio.h #include stdio.h 注意:两者的区别。注意:两者的区别。3.2.2 格式输出函数格式输出函数printf 1printf函数调用的一般形式函数调用的一般形式printf(“格式控制格式控制”,输出表列,输出表列);作用作用: :向终端向终端( (或系统隐含指定设备或系统隐含指定设备) )输出若干个任意输出若干个任意类型的数据。类型的数据。1 1)格式控制字符串是用双引号括起来的一个字符串。控)格式控制字符串是用双引号括起来的一个字符串。控制字符串可以由

14、格式字符串和非格式字符串两种成分构制字符串可以由格式字符串和非格式字符串两种成分构成,格式字符串是以成,格式字符串是以“% %”开头的字符串,在开头的字符串,在“% %”后面后面跟有各种格式字符,以说明输出数据的类型、形式、长跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。度、小数位数等。例如: %d:按十进制整型输出; %ld:按十进制长整型输出; %x:按十六进制整型输出; %c:按字符型输出。 非格式字符串在输出时原样输出,在显示中起提示作用。2 2)输出表列是要输出的若干数据项,各数据项之间要用)输出表列是要输出的若干数据项,各数据项之间要用 “,”分隔,数据项可以是常

15、量、变量或表达式。分隔,数据项可以是常量、变量或表达式。 要求格式字符串和各输出项在数量和类型上一一对应。要求格式字符串和各输出项在数量和类型上一一对应。例例3.1 简单简单printf函数应用举例。函数应用举例。#includevoid main( ) int a=66; long int b=100000087; char ch=A; printf(%d %ldn,a,b); printf(%d,%ldn,a,b); printf(%cn,ch); printf(a=%XH,b=%XHn,a,b);程序运行结果(凵代表一个空格凵代表一个空格):66凵凵10000008766, 100000

16、087Aa=42H, b=5F5E157H 2.2.格式控制字符格式控制字符 在输出时,对不同类型的数据使用不同的格式字符。在输出时,对不同类型的数据使用不同的格式字符。(1)整型格式说明符)整型格式说明符 1)十进制数形式)十进制数形式格式符:用于输出一个有符号的十进制整数。格式符:用于输出一个有符号的十进制整数。有以下几种用法:有以下几种用法: %d %d 按十进制整型数据的实际长度输出。按十进制整型数据的实际长度输出。 %md m%md m为指定的输出字段宽度。如果数据的位数小于为指定的输出字段宽度。如果数据的位数小于m,m,则左端则左端补以空格补以空格, ,若大于若大于m,m,则按实际

17、位数输出。则按实际位数输出。 printf(“%6d,%2d”, i, j); 若若i=654, j=86420,则输出结果为则输出结果为 凵凵凵凵凵凵654,86420 %ld, %ld,输出长整型数据。输出长整型数据。long x=246810;printf (%ld ,x);在在VC中,由于中,由于long型和型和int型都占型都占4个字节,个字节,long型数据也型数据也可以用可以用%d形式输出形式输出 格式符格式符u:用来输出:用来输出unsigned型数据,即无符号数,以十进制整数型数据,即无符号数,以十进制整数形式输出。形式输出。一个有符号整数一个有符号整数(int型型)也可以用

18、也可以用%u格式输出;反之,一个格式输出;反之,一个unsigned型数据也可以用型数据也可以用%d格式输出。格式输出。 例例3.2 无符号数据的输出。无符号数据的输出。#includevoid main( ) unsigned int a=4294967295; int b=-2; printf(a=%d,%un, a,a); printf(b=%d,%un, b,b); 程序运行结果:程序运行结果: a=-1,4294967295 b=-2,4294967294 整型数据在内存中是以其补码形式存储的,整型数据在内存中是以其补码形式存储的,a和和b在内存中的存储形在内存中的存储形式:式: a

19、=4294967295a=4294967295: b=-2b=-2:输出数据时,如果是以输出数据时,如果是以“%d”形式输出,则最高位代表符号形式输出,则最高位代表符号位,输出真值(位,输出真值(a的真值为的真值为-1,b的真值为的真值为-2);如果是以);如果是以“%u”形式输出,则无符号位,最高位也属于数据的一部分,形式输出,则无符号位,最高位也属于数据的一部分,输出无符号十进制数(输出无符号十进制数(a为为4294967295,b为为4294967294)。)。 2)八进制数形式)八进制数形式格式符格式符o:以八进制整数形式输出。由于是将内存单元中各位:以八进制整数形式输出。由于是将内存

20、单元中各位的值的值(0或或1)按八进制形式输出,因此输出的数值不带符号,即按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。将符号位也一起作为八进制数的一部分输出。例如:例如:int a=-3;printf(%d,%o, a, a);输出为输出为-3,37777777775 -3-3的补码:的补码:1 13)十六进制数形式)十六进制数形式格式符格式符x:以十六制整数形式输出。:以十六制整数形式输出。例如:例如:int a=-2;printf(“%x,%o,%d”,a,a,a);输出结果为输出结果为:fffffffe, 37777777776, -2以十六进制形

21、式输出的时候,也可以指定输出字段的宽度,如以十六进制形式输出的时候,也可以指定输出字段的宽度,如“%12x”。 (2)实型格式说明符)实型格式说明符 f f格式符:用来输出实数(包括单双精度),以小数格式符:用来输出实数(包括单双精度),以小数形式输出。形式输出。%f%f。不指定宽度。不指定宽度, ,整数部分全部输出整数部分全部输出, ,并输出并输出6 6位小数。位小数。例例3.3 用用%f输出实数,小数部分只能输出输出实数,小数部分只能输出6位。位。#includevoid main( ) float x=3,y=222222.222; printf(%fn ,x*y); 输出输出: : 6

22、66666.656250 注意注意:只有前只有前7位数字是位数字是有效数字。所以不要认有效数字。所以不要认为计算机输出的数字都为计算机输出的数字都是绝对精确有效的。是绝对精确有效的。例例3.4 用用%f输出双精度实数,小数部分也只能输出输出双精度实数,小数部分也只能输出6位。位。#includevoid main( ) double x=3333333333333.333333333,y=2222222222222.222222222; printf(“%lfn”, x+y); 程序运行结果:程序运行结果:5555555555555.555700 注意:注意:双精度实数的有效位数一般为双精度实

23、数的有效位数一般为16位。本例中最后三位小数位。本例中最后三位小数(已经超过(已经超过16位)是无意义的。虽然结果是双精度实数,但是用位)是无意义的。虽然结果是双精度实数,但是用“%lf”形式也只能输出形式也只能输出6位小数。双精度实数也可以位小数。双精度实数也可以“%f”形式形式输出,与输出,与“%lf ”等价,但是同样,我们本着对应的原则,应该等价,但是同样,我们本着对应的原则,应该使用使用“%lf”。 %m.nf %m.nf 指定的数据占指定的数据占m m列列, ,有有n n位小数。当数值长度小于位小数。当数值长度小于m,m,则左则左端补空格。端补空格。%-m.nf %-m.nf 使输出

24、的数值向左端靠使输出的数值向左端靠, ,右端补空格。右端补空格。例例3.5 输出实数时,指定数据宽度和小数位数。输出实数时,指定数据宽度和小数位数。#includevoid main() float a; a=10000/3.0; printf(%-25.15f, n%25.15f n , a, a);程序运行结果:程序运行结果:3333.333333333333500凵凵凵凵凵凵凵凵凵凵 , 凵凵凵凵凵凵凵凵凵凵3333.333333333333500 (3)字符型格式说明)字符型格式说明 格式符格式符c:用于输出一个字符。:用于输出一个字符。 例如:例如:char ch= a;printf

25、(%c ,ch);运行时输出:运行时输出:a 也可以指定输出数据所占列宽。也可以指定输出数据所占列宽。例如:例如:printf(%8c ,ch);运行时输出运行时输出凵凵凵凵凵凵凵凵凵凵凵凵凵凵a 一个整数,如果它的值在一个整数,如果它的值在0255范围内,也可以使用范围内,也可以使用“%c”使之使之按字符形式输出,在输出前,系统会将该整数作为按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成码转换成相应的字符;反之,一个字符数据也可以使用相应的字符;反之,一个字符数据也可以使用“%d”以整数的形以整数的形式输出。式输出。例如:例如:short a=120;printf(“%c”,

26、a);输出字符输出字符x 如果整数比较大,则把它的最后一个字节的信息以字符形式输出。如果整数比较大,则把它的最后一个字节的信息以字符形式输出。例如:例如:short a=376;printf(%c,a);也输出字符也输出字符x。376在内存中的存放形式:在内存中的存放形式:00000001 01111000注意:注意:本例只是为了说明字符型数据是以其最低一个字节的本例只是为了说明字符型数据是以其最低一个字节的ASCII码表示的,因而一个码表示的,因而一个short、int、long等最低一个字节的数据就可等最低一个字节的数据就可以当成一个字符型来看待,但是我们处理字符型数据时,应准确声以当成一

27、个字符型来看待,但是我们处理字符型数据时,应准确声明其明其char类型,而不是类型,而不是short、int和和long等类型。等类型。(4)字符串格式说明符)字符串格式说明符格式符格式符s:用于输出一个字符串。有下面几种用法:用于输出一个字符串。有下面几种用法: %s%s。 例如:例如:printf(“%sn”,“BEIJING”); printf(“%sn”,“BEIJING”); 输出输出: BEIJING: BEIJING %ms %-ms %m.ns %-m.ns%ms %-ms %m.ns %-m.ns。其中。其中: : m: m: 输出字符串所占的列数,如字符串本身长度大输出字符

28、串所占的列数,如字符串本身长度大 于于m m,则突破,则突破m m的限制。若串长小于的限制。若串长小于m,m,则左补空格。则左补空格。 n: n: 只取字符串左端只取字符串左端n n个字符个字符, ,这这n n个字符输出在个字符输出在m m列列 的右侧,左补空格。的右侧,左补空格。 -: -: 输出的字符串向左靠输出的字符串向左靠, ,右边补空。右边补空。例例3.6 字符串的输出。字符串的输出。#includevoid main( ) printf(%4s,%10.4s,% .5s,%-8.2sn, ZIFUCHUAN,ZIFUCHUAN,ZIFUCHUAN, ZIFUCHUAN); 程序运行

29、结果:程序运行结果:ZIFUCHUAN,凵凵凵凵凵凵,凵凵凵凵凵凵ZIFU,ZIFUC,ZI凵凵凵凵凵凵凵凵凵凵凵凵 3关于关于printf函数使用的几点说明函数使用的几点说明1)在用)在用printf函数输出时,务必注意格式控制中的各格式说明符与函数输出时,务必注意格式控制中的各格式说明符与输出表中的各数据项目在个数、次序、类型等方面必须一一对应,输出表中的各数据项目在个数、次序、类型等方面必须一一对应,否则将会出现错误。否则将会出现错误。2)格式字符必须用小写字母,如)格式字符必须用小写字母,如d不能写成不能写成%D。3)可以在)可以在printf函数的函数的“格式控制字符串格式控制字符串

30、”内包含内包含“转义字符转义字符”,如如n、t、b、r、f、377 等。等。4)如果想输出字符)如果想输出字符%,则应该在,则应该在“格式控制格式控制”字符串中用连续字符串中用连续两个两个%表示。表示。例如:例如:printf(f=%.2f%, 3/4.0);输出:输出:f=0.75% 例例3.7 格式化输出函数格式化输出函数printf综合应用举例综合应用举例#includevoid main( ) int a=15; float f=123.1234567; double d=12345678.1234567; char ch=p; printf(a=%d,%5d,%o,%xn,a,a,a

31、,a); printf(f=%f,%lf,%5.4lf,%en,f,f,f,f); printf(d=%lf,%f,%.4lfn,d,d,d); printf(ch=%c,%7cn,ch,ch); printf(s=%s,%8.5sn,CHANGCHUN, CHANGCHUN);程序运行结果:程序运行结果:a=15, 凵凵凵凵凵凵15,17,ff=123.123459,123.123459,123.1235,1.231235e+002d=12345678.123457,12345678.123457,12345678.1235ch=p, 凵凵凵凵凵凵凵凵凵凵凵凵p s=CHANGCHUN, 凵

32、凵凵凵凵凵CHANG 3.2.3 格式输入函数格式输入函数scanfscanf函数是格式输入函数,即按用户指定的格式从键盘输入函数是格式输入函数,即按用户指定的格式从键盘输入数据到指定的变量中。数据到指定的变量中。 1.1.一般形式一般形式 scanf(scanf(格式控制格式控制, ,地址表列地址表列) )格式控制的含义同格式控制的含义同printfprintf函数函数;“;“地址表列地址表列”是由若干个是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。地址组成的表列,可以是变量的地址,或字符串的首地址。例例3.8 3.8 用用scanfscanf函数输入数据。函数输入数据。#i

33、ncludevoid main() int a,b,c; printf(input a, b, cn); scanf(%d%d%d, &a, &b, &c); printf(a=%d,b=%d,c=%d, a, b, c); 798acb输入输入: 7 8 9输出输出: a=7, b=8, c=9&a, &b, &c中的中的“&”是是“地址运算符地址运算符”, 上面上面scanf函数的作用是函数的作用是:按照按照a, b, c在内存的地址将在内存的地址将a, b, c的值存进去。的值存进去。2.2.格式说明格式说明与与printf函数中的格式声明相似,以函数中的格式声明相似,以%开始,以一个格

34、式开始,以一个格式字符结束,中间可以插入附加的字符。字符结束,中间可以插入附加的字符。 3.3.使用使用scanfscanf函数时应注意的问题函数时应注意的问题(1)scanf(1)scanf函数中的函数中的“格式控制格式控制”后面应当是变量地址,而不后面应当是变量地址,而不是变量名。是变量名。 scanf(“%d,%d”,a,b);scanf(“%d,%d”,a,b);是错误的。是错误的。(2)(2)scanf函数函数“格式控制格式控制”中的各格式说明符与内存地址表中的各格式说明符与内存地址表中的变量地址在个数、次序、类型方面必须一一对应。特别中的变量地址在个数、次序、类型方面必须一一对应。

35、特别要注意,在用要注意,在用scanf函数给双精度实型变量输入数据时,格式函数给双精度实型变量输入数据时,格式说明符应为(必须)说明符应为(必须)%lf。(3)(3)当用于输入数据的格式说明符中没有宽度说明时,则在具体当用于输入数据的格式说明符中没有宽度说明时,则在具体输入数据时分以下两种情况:输入数据时分以下两种情况:如果各格式说明符之间没有其他字符,则在输入数据时,两如果各格式说明符之间没有其他字符,则在输入数据时,两个数据之间用个数据之间用“空格空格”、“Tab”、或、或“回车回车”来分隔。来分隔。如果各格式说明符之间包含其它字符,则在输入数据时,应如果各格式说明符之间包含其它字符,则在

36、输入数据时,应输入与这些字符相同的字符作为间隔。输入与这些字符相同的字符作为间隔。scanf(%d%d%f%f,&a,&b,&c,&d);输入数据的形式应为:输入数据的形式应为: 87 15.2 9.3 scanf(%d,%d,% f,%f,&a,&b,&c,&d);输入数据的形式应为:输入数据的形式应为:21,87,15.2,9.3 (4)当整型或字符型格式说明符中有宽度说明时,按宽度说明截取)当整型或字符型格式说明符中有宽度说明时,按宽度说明截取数据。数据。scanf(%3d%2c%3c%2d,&a,&b,&c,&d);若从键盘输入如下:若从键盘输入如下: 则则a得到的值为得到的值为123

37、,b得到的值为得到的值为4,c得到的值为得到的值为6,d得到的值为得到的值为90。 (5)(5)在用在用“%c”%c”格式输入字符时,空格字符和格式输入字符时,空格字符和“转转义字符义字符”都作为有效字符输入。都作为有效字符输入。scanf(“%c%c%c”,&c1,&c2,&c3);scanf(“%c%c%c”,&c1,&c2,&c3); 如输入如输入 a b c,a b c,则则c1=a,c2= ,c3=bc1=a,c2= ,c3=b(6)(6)在用于输入的实型格式说明符中不能用在用于输入的实型格式说明符中不能用m.n来指定输入数据来指定输入数据的宽度和小数的位数。的宽度和小数的位数。 下

38、面的用法是错误的:下面的用法是错误的: scanf(%8.3f,&f);(7)(7)由于由于或或是作为键盘输入数据的结束符,因此,是作为键盘输入数据的结束符,因此,在在scanf函数的函数的“格式控制格式控制”中,最后不能加换行符中,最后不能加换行符n。3.2.4 putchar3.2.4 putchar函数函数作用作用: :向指定的输出设备输出一个字符。向指定的输出设备输出一个字符。格式格式: putchar(c); : putchar(c); 它输出字符变量它输出字符变量c c的值,的值,c c可以是字符型变量或整型可以是字符型变量或整型变量。变量。例例3.9 输出单个字符。输出单个字符。

39、#includevoid main() int i=67; char a=B,b=o,c=k; putchar(a);putchar(b);putchar(b);putchar(c);putchar(t); putchar(i);putchar(b); putchar(n); putchar(101);putchar(a); 程序运行结果为:程序运行结果为:Book Co AB 3.2.5 getchar3.2.5 getchar函数函数作用作用: :从指定的输入设备输入一个字符。从指定的输入设备输入一个字符。格式格式: getchar();: getchar();函数没有参数,函数的值就是从

40、输入设备得到的字符。函数没有参数,函数的值就是从输入设备得到的字符。例例3.10 输入单个字符。输入单个字符。#includevoid main() char c; c=getchar(); putchar(c); 运行结果:运行结果: w w 使用使用getchar函数时请注意:函数时请注意:1)getchar函数只能接受一个字符,输入多于一个字符时,只接收函数只能接受一个字符,输入多于一个字符时,只接收第一个字符。第一个字符。2)使用)使用getchar函数前必须包含头文件函数前必须包含头文件“stdio.h”。3) getchar函数得到的字符可以赋给一个字符型变量或整型变量函数得到的字

41、符可以赋给一个字符型变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。也可以不赋给任何变量,作为表达式的一部分。如:如:putchar(getchar()或或printf(“%c”,getchar()。 3.3 顺序结构程序设计举例 例例3.11输入三个大写英文字母,输出其ASCII码值,再输出其对应的小写字母和小写字母的ASCII码值。#includevoid main( ) char a,b,c; /*定义输入变量*/ char d,e,f; /*定义输出变量*/ printf(input character a,b,cn); scanf(%c%c%c,&a,&b,&c); pri

42、ntf(%d,%d,%dn,a,b,c); d=a+32; /*大写字母转换成对应的小写字母*/ e=b+32; f=c+32; printf(%d,%d,%dn,d,e,f); /*输出d、e、f的ASCII码值*/ printf(%c%c%cn,d,e,f); /*输出d、e、f所对应的字母*/程序运行结果:程序运行结果:input character a,b,cBOY66,79,8998,111,121boy例例3.12 输入三角形的三边长,求三角形面积。输入三角形的三边长,求三角形面积。 )()(csbsassarea其中其中s = (a+b+c)/2.0 #include#inclu

43、devoid main( ) float a,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); s= (a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“a=%7.2f,b=%7.2f,c=%7.2fn”,a,b,c,s); printf(“area=%7.2f, s=%7.2f n”, area,s); 程序运行结果:程序运行结果:3,4,5 a=凵凵凵凵凵凵3.00,b=凵凵凵凵凵凵4.00,c=凵凵凵凵凵凵5.00area=凵凵凵凵凵凵6.00,s=凵凵凵凵凵凵6.00 例例3.13 请编写程序,实现将两个两位

44、整数请编写程序,实现将两个两位整数a、b合并成一个整数合并成一个整数c。合并方式为:将合并方式为:将a的十位和个位数依次放在的十位和个位数依次放在c数的千位和十位上,数的千位和十位上,b的十位和个位数依次放在的十位和个位数依次放在c数的百位和个位上。数的百位和个位上。本题的关键是将本题的关键是将a和和b的个位和十位数分开,任意一个整数对的个位和十位数分开,任意一个整数对10求余,得到的余数即为该整数的个位数;根据求余,得到的余数即为该整数的个位数;根据C语言的运算规则语言的运算规则,一个两位整数被,一个两位整数被10除,得到的数即为该两位整数的十位数。除,得到的数即为该两位整数的十位数。#in

45、cludevoid main( )int a,b,c; /*定义输入变量a和b,输出变量c*/int as, ag;int bs, bg;printf(input integer a,bn); scanf(%d%d,&a,&b);as = a/10;/*计算a的十位数*/ag = a%10;/*计算a的个位数*/bs = b/10;/*计算b的十位数*/bg = b%10;/*计算b的个位数*/ c = as*1000+bs*100+ag*10+bg; /*根据公式合成c*/printf(c is %dn, c);程序运行结果:程序运行结果:35凵凵12 C is 3152例例3.14一个水分

46、子的质量约为3.010-23g,1夸脱水大约950g。编写程序,输入水的夸脱数(整数),求解其包含多少水分子(以指数形式输出,保留小数点后2位)。本题的解题思路是从键盘输入一个夸脱数,乘以本题的解题思路是从键盘输入一个夸脱数,乘以950,得到水的克,得到水的克数,再除以一个水分子的质量数,再除以一个水分子的质量3.010-23,得到水分子的个数。,得到水分子的个数。#includevoid main( )int quart;/*定义水的夸脱数*/double mol=3e-23;/*定义一g水所包含的分子数*/int height=950;/*定义1夸脱水的质量*/double num;/*定义quart夸脱水所包含的分子数*/scanf(%d, &quart);num = (quart*height)/mol;/*根据公式计算num*/printf(The number of water molecule is %.2en, num); /*指数方式输出*/程序运行结果:程序运行结果:2 The number of water molecule is 6.33e+25

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com