版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.1 C语句概述语句概述 4.2 程序的三种基本结构程序的三种基本结构 4.3 数据输入输出的概念及在语言中的实现数据输入输出的概念及在语言中的实现 4.4 字符数据的输入输出字符数据的输入输出 4.5 格式输入与输出格式输入与输出 4.6 顺序结构程序设计举例顺序结构程序设计举例 习题习题 第第4章章 最简单的最简单的c程序设计程序设计顺序程序设计顺序程序设计 重点:重点: 数据输入输出的概念及在语言中的实现数据输入输出的概念及在语言中的实现 字符数据的输入输出字符数据的输入输出 难点:难点: 格式输入与输出格式输入与输出 4.1 C语句概述语句概述 C语言的语句用来向计算机系统发出操作指
2、令。一个语言的语句用来向计算机系统发出操作指令。一个 语句经编译后产生若干条机器指令。语句经编译后产生若干条机器指令。一个实际的程序应一个实际的程序应 当包含若干语句。当包含若干语句。C语句都是用来完成一定操作任务语句都是用来完成一定操作任务 的,声明部分的内容不应称为语句。的,声明部分的内容不应称为语句。如:如:int a;不是一个不是一个 C语句,它不产生机器操作,而只是对变量的定义。语句,它不产生机器操作,而只是对变量的定义。 C程序结构可以用图程序结构可以用图4.1表示。即表示。即一个一个C程序可以由若程序可以由若 干个源程序文件干个源程序文件(分别进行编译的文件模块分别进行编译的文件
3、模块)组成组成,一个,一个 源文件可以由若干个函数和预处理命令以及全局变量声源文件可以由若干个函数和预处理命令以及全局变量声 明部分组成,一个函数由数据定义部分和执行语句组成。明部分组成,一个函数由数据定义部分和执行语句组成。 图图4.1 C程序应该包括程序应该包括数据描述数据描述(由声明部分来实现由声明部分来实现)和和 数据操作数据操作(由语句来实现由语句来实现)。 C语句可以分为以下语句可以分为以下5类:类: 控制语句控制语句,完成一定的控制功能。,完成一定的控制功能。 C只有只有9种控制语句,它们是:种控制语句,它们是: if()else (条件语句条件语句) for() (循环语句循环
4、语句) while() (循环语句循环语句) dohile() (循环语句循环语句) continue (结束本次循环语句结束本次循环语句) break (中止执行中止执行switch或循环语句或循环语句) switch (多分支选择语句多分支选择语句) goto (转向语句转向语句) return (从函数返回语句从函数返回语句) 上面上面9种语句中的括号种语句中的括号()表示其中是一个条件,表示其中是一个条件, 表示内嵌的语句。表示内嵌的语句。 (2) 函数调用语句函数调用语句。由一次函数调用加一个分号构由一次函数调用加一个分号构 成一个语句。成一个语句。 例如:例如:printf( “t
5、his is a c statement); (3) 表达式语句。表达式语句。 由一个表达式构成一个语句,最典型的是,由赋由一个表达式构成一个语句,最典型的是,由赋 值表达式构成一个赋值语句。值表达式构成一个赋值语句。 a=3 是一个赋值表达式是一个赋值表达式 a=3;是一个赋值语句;是一个赋值语句 可以看到可以看到一个表达式的最后加一个分号就成了一一个表达式的最后加一个分号就成了一 个语句。个语句。任何有意义的表达式都可以加上分号而任何有意义的表达式都可以加上分号而 成为语句,表达式能构成语句是成为语句,表达式能构成语句是C语言的一个重语言的一个重 要特色。要特色。 (4) 空语句空语句。下
6、面是一个空语句:。下面是一个空语句: ; 即只有一个分号的语句,它什么也不做。即只有一个分号的语句,它什么也不做。 (5) 用用 把一些语句括起来成为复合语句把一些语句括起来成为复合语句,又称,又称 分程序。如下面是一个复合语句。分程序。如下面是一个复合语句。 z=x+y; t=z/100; printf(%f,t); 4.2 程序的三种基本结构程序的三种基本结构 为了提高程序设计的质量和效率,现在普遍采用结为了提高程序设计的质量和效率,现在普遍采用结 构化程序设计方法。结构化程序由若干个基本结构组构化程序设计方法。结构化程序由若干个基本结构组 成。有三种基本结构成。有三种基本结构: (1)顺
7、序结构)顺序结构 (2)选择结构)选择结构 (3)循环结构)循环结构: 当型循环结构当型循环结构 直到型循环结构直到型循环结构 每一个基本结构可以包含每一个基本结构可以包含 一个或若干个语句。一个或若干个语句。 4.3 数据输入输出的概念及在数据输入输出的概念及在C语言中的实现语言中的实现 所谓输入输出是以计算机主机为主体而言的。所谓输入输出是以计算机主机为主体而言的。 C语言本身不提供输入输出语句,输入和输出操语言本身不提供输入输出语句,输入和输出操 作是由函数来实现的。作是由函数来实现的。 C编译系统编译系统与与C函数库函数库是分别进行设计的,因此是分别进行设计的,因此 不同的计算机系统所
8、提供函数的数量、名字和功能不同的计算机系统所提供函数的数量、名字和功能 是不完全相同的。是不完全相同的。 C语言函数库中有一批语言函数库中有一批“标准输入输出函数标准输入输出函数” 。 printf(格式输出格式输出) scanf(格式输入格式输入) putchar: (输出字符输出字符), getchar: (输入字符输入字符), puts: (输出字符串输出字符串), gets: (输入字符串输入字符串)。 4.4 字符数据的输入输出字符数据的输入输出 C标准标准I/O函数库中最简单字符输入输出函函数库中最简单字符输入输出函 数:数: putchar() getchar() 4.4.1 p
9、utchar函数函数(字符输出函数字符输出函数) putchar函数的作用是向终端输出一个字符函数的作用是向终端输出一个字符: 例如:例如: putchar(c); 它它输出字符变量输出字符变量c的值的值。 c可以是字符型变量可以是字符型变量 或整型变量。或整型变量。 举例:输出单个字符举例:输出单个字符 #include main() char a,b,c; a=b;b=o;c=y; putchar(a);putchar(b);putchar(c); 运行结果:运行结果: boy 也也可以输出控制字符可以输出控制字符,如,如putchar(n)输出一个换行符,使输出一个换行符,使 输出的当前
10、位置移到下一行的开头。输出的当前位置移到下一行的开头。 putchar(a);putchar(n);putchar(b);putchar(n);putcha r(c); putchar(n); 则输出结果为:则输出结果为: b o y 也也可以输出其他转义字符可以输出其他转义字符,如:,如: putchar(101) (输出字符输出字符a) putchar() (输出单引号字符输出单引号字符) putchar(015) (输出回车,不换行,使输出的当前位输出回车,不换行,使输出的当前位 置移到本行开头置移到本行开头) 4.4.2 getchar函数函数(字符输入函数字符输入函数) 此函数的作用
11、是从终端此函数的作用是从终端(或系统隐含指定的输入或系统隐含指定的输入 设备设备)输入一个字符。输入一个字符。 getchar函数没有参数,其一般形式为:函数没有参数,其一般形式为: getchar() 函数的值就是从输入设备得到的字符函数的值就是从输入设备得到的字符。 举例:输入单个字符举例:输入单个字符 #include main() char c; c=getchar(); /*putchar(getchar();*/ putchar(c); /*printf(“ %c”,getchar();*/ 4.5.1 printf函数函数(格式输出函数格式输出函数) 它的作用是向终端它的作用是向
12、终端(或系统隐含指定的输出设备或系统隐含指定的输出设备)输出若干个输出若干个 任意类型的数据。任意类型的数据。 printf函数的一般格式为:函数的一般格式为: printf(格式控制,输出列表格式控制,输出列表) 如:如:printf(%d, %cn,i,c) 格式说明格式说明,由,由“%”和格式字符组成,如和格式字符组成,如%d,%f等。等。 它的作用是将输出的数据转换为指定的格式输出。它的作用是将输出的数据转换为指定的格式输出。格式格式 说明总是由说明总是由“%”字符开始的字符开始的。 普通字符普通字符,即需要原样输出的字符。例如上面,即需要原样输出的字符。例如上面printf函函 数中
13、双引号内的逗号、空格和换行符。数中双引号内的逗号、空格和换行符。 “输出列表输出列表”是需要输出的一些数据,可以是表达式。是需要输出的一些数据,可以是表达式。 4.5 格式输入与输出格式输入与输出 2. 格式字符格式字符 对不同类型的数据用不同的格式字符。常用的有以下几种对不同类型的数据用不同的格式字符。常用的有以下几种 格式字符:格式字符: (1) d格式符。用来输出十进制整数。格式符。用来输出十进制整数。: %d,按整型数据的实际长度输出。,按整型数据的实际长度输出。 %md,m为指定的输出字段的宽度。如果数据的位为指定的输出字段的宽度。如果数据的位 数小于数小于m,则左端补以空格,若大于
14、,则按实际位数输,则左端补以空格,若大于,则按实际位数输 出。如:出。如: printf(%4d,%4d,a,b); 若若a=123,b=12345,则输出结果为,则输出结果为 (空格空格) 123,12345 %ld,输出长整型数据。如,输出长整型数据。如 long a=135790; printf(%ld,a); 对长整型数据也可以指定字段宽度,如将上面对长整型数据也可以指定字段宽度,如将上面printf函函 数中的数中的“%ld”改为改为“%8ld”,则输出为:,则输出为: (空格空格)135790 一个一个int型数据可以用型数据可以用%d或或%ld格式输出。格式输出。 (2) o格式
15、符,以八进制数形式输出整数。格式符,以八进制数形式输出整数。由于是将内存由于是将内存 单元中的各位的值单元中的各位的值(0或或1)按八进制形式输出,因此按八进制形式输出,因此输出输出 的数值不带符号,即将符号位也一起作为八进制数的一的数值不带符号,即将符号位也一起作为八进制数的一 部分输出部分输出。例如:。例如: int a=-1; printf(%d,%o,a,a); -1在内存单元中的存放形式在内存单元中的存放形式(以补码形式存放以补码形式存放)如下:如下: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 输出为输出为 -1,177777 不会输出带负号的八进制整数不会输出
16、带负号的八进制整数。对长整数。对长整数(long型型) 可以用可以用“%lo”格式输出。同样可以指定字段宽度,格式输出。同样可以指定字段宽度, 如如:printf(“%8o”,a)输出为输出为:(2个空格个空格)177777。 (3) x格式符,以十六进制数形式输出整数。格式符,以十六进制数形式输出整数。同样不同样不 会出现负的十六进制数会出现负的十六进制数。例如:。例如: int a=-1; printf(%x,%o,%d,a,a,a); 输出结果为输出结果为 ffff,177777,-1 同样可以用同样可以用“%lx”输出长整型数,也可以指定输出输出长整型数,也可以指定输出 字段的宽度,如
17、字段的宽度,如“%12x”。 (4) u格式符,用来输出格式符,用来输出unsigned型数据,即无符号型数据,即无符号 数,以十进制形式输出。数,以十进制形式输出。 一个有符号整数一个有符号整数(int型型)也可以用也可以用%u格式输出;反格式输出;反 之,一个之,一个unsigned型数据也可以用型数据也可以用%d格式输出。格式输出。 按相互赋值的规则处理。按相互赋值的规则处理。unsigned型数据也可用型数据也可用 %o或或%x格式输出。格式输出。 例例4.3无符号数据的输出。无符号数据的输出。 main() unsigned int a=65535; int b=-2; printf
18、(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); 运行结果为:运行结果为: a=-1,177777,ffff, 65535 b=-2,177776,fffe,65534 根据数据在内存中的表示方法,请大家自己分析程序根据数据在内存中的表示方法,请大家自己分析程序 的运行结果。的运行结果。 (5) c格式符,用来输出一个字符。格式符,用来输出一个字符。 如:如: charc=a; printf(%c,c); 一个整数,只要它的值在一个整数,只要它的值在0255范围内,也可范围内,也可 以用字符形式输出,在输出前,系统会将该整数以用
19、字符形式输出,在输出前,系统会将该整数 作为作为Ascii码转换成相应的字符;反之,一个字符码转换成相应的字符;反之,一个字符 数据也可以用整数形式输出。数据也可以用整数形式输出。 例例4.4字符数据的输出。字符数据的输出。 main() char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); 运行结果为:运行结果为: a,97 a,97 也可以指定输出字数宽度,如果有也可以指定输出字数宽度,如果有 printf(“%3c”,c) ; 则输出:则输出:“ a”,即,即c变量输出占变量输出占3列,前列,前2列补空格。列补空格。 (6
20、) s格式符,用来输出一个字符串。格式符,用来输出一个字符串。有几种用法:有几种用法: %s,例如:,例如:printf(%s,china) 输出输出“china”字符串字符串(不包括双引号不包括双引号)。 %ms,输出的字符串占列,如字符串本,输出的字符串占列,如字符串本 身长度大于身长度大于m,则突破的限制,将字符串全部,则突破的限制,将字符串全部 输出。输出。若串长小于若串长小于m,则左补空格。,则左补空格。 %-ms,如果串长小于,则在列范围内,如果串长小于,则在列范围内, 字符串向左靠,右补空格。字符串向左靠,右补空格。 %m.ns,输出占列,但只取字符串中左,输出占列,但只取字符串
21、中左 端端n个字符。这个字符。这n个字符输出在列的右侧,左补个字符输出在列的右侧,左补 空格。空格。 %-m.ns,其中、,其中、n含义同上,含义同上,n个字符输个字符输 出在列范围的左侧,右补空格。出在列范围的左侧,右补空格。如果如果n, 则自动取则自动取n值,即保证值,即保证n个字符正常输出。个字符正常输出。 例例4.5字符串的输出。字符串的输出。 main() printf(%3s,%7.2s,%.4s,%-5.3sn, china,china, china, china) 输出如下:输出如下: china, ch,chin,chi 其中第其中第3个输出项,格式说明为个输出项,格式说明为
22、“%.4s”,即只指定,即只指定 了了n,没指定,自动使,没指定,自动使=n=4,故占,故占4列。列。 (7) f格式符,用来输出实数格式符,用来输出实数(包括单、双精度包括单、双精度),以,以 小数形式输出。小数形式输出。有以下几种用法:有以下几种用法: %f,不指定字段宽度,由系统自动指定,使,不指定字段宽度,由系统自动指定,使 整数部分全部如数输出,并整数部分全部如数输出,并输出输出6位小数位小数。应当注。应当注 意,并非全部数字都是有效数字。单精度实数的有意,并非全部数字都是有效数字。单精度实数的有 效位数一般为效位数一般为7位。位。 例例4.6输出实数时的有效位数。输出实数时的有效位
23、数。 main() float x,y; x=111111.111;y=222222.222; printf(%f,x+y); 运行结果为运行结果为 333333328125 显然,只有前显然,只有前7位数字是有效数字。千万不要以为位数字是有效数字。千万不要以为 凡是打印出来的数字都是准确的。凡是打印出来的数字都是准确的。 双精度数也可用双精度数也可用%f格式输出,它的有效位数格式输出,它的有效位数 一般为一般为16位,给出小数位,给出小数6位。位。 例例4.7输出双精度数时的有效位数。输出双精度数时的有效位数。 main() double x,y; x=1111111111111.11111
24、1111; y=2222222222222.222222222; printf(%f,x+y); 输出结果为输出结果为 3333333333333.333010 可以看到最后可以看到最后3位小数位小数(超过超过16位位)是无意义的。是无意义的。 %.nf指定输出的数据共占列,其中有指定输出的数据共占列,其中有n 位小数。如果数值长度小于,则左端补空格。位小数。如果数值长度小于,则左端补空格。 %-.nf与与%.nf基本相同,只是使输出的数基本相同,只是使输出的数 值向左端靠,右端补空格。值向左端靠,右端补空格。 例例4.8输出实数时指定小数位数。输出实数时指定小数位数。 main() floa
25、t f=123.456; printf(%f %10f %10.2f %.2f %-10.2fn,f,f,f, f,f); 输出结果如下:输出结果如下: 123.456001 123.456001 123.46 123.46 123.46 (8) e格式符,以指数形式输出实数。格式符,以指数形式输出实数。可用以下形式:可用以下形式: %e不指定输出数据所占的宽度和数字部分的小数不指定输出数据所占的宽度和数字部分的小数 位数,位数,有的有的C编译系统自动指定给出编译系统自动指定给出6位小数位小数,指数部,指数部 分占分占5位位(如如e+002),其中,其中“e”占占1位,指数符号占位,指数符号占
26、1位,位, 指数占指数占3位。位。 数值按规范化指数形式输出数值按规范化指数形式输出(即小数点前必须有而即小数点前必须有而 且只有且只有1位非零数字位非零数字)。例如。例如 printf(%e,123.456); 输出:输出:1.234560e+002。 6列列 5列列 输出的实数共占输出的实数共占11列宽度列宽度 (注注:不同系统的规定略有不同系统的规定略有 不同不同) 。 %m.ne和和%-m.ne。、。、n和和“-”字符含义与前相字符含义与前相 同。同。此处此处n指拟输出的数据的小数部分指拟输出的数据的小数部分(又称尾数又称尾数)的的 小数位数。小数位数。 (9) g格式符,用来输出实数
27、,它根据数值的大小,格式符,用来输出实数,它根据数值的大小, 自动选自动选f格式或格式或e格式格式(选择输出时占宽度较小的一选择输出时占宽度较小的一 种种),且不输出无意义的零。,且不输出无意义的零。%g格式用得较少。格式用得较少。 在使用在使用printf函数时,还有几点要说明:函数时,还有几点要说明: (1) 除了除了x,e,g外,其他格式字符必须用小写字母。外,其他格式字符必须用小写字母。 (2) 可以在可以在printf函数中的函数中的“格式控制格式控制”字符串内包字符串内包 含含 “转义字符转义字符”,如,如“n”、“t”、“b”、“f”等。等。 (3) 上面介绍的上面介绍的d、o、
28、x、u、c、s、f、e、g等字符,等字符, 如用在如用在“%”后面就作为格式符号后面就作为格式符号。一个格式说明。一个格式说明 以以“%”开头,以上述开头,以上述9个格式字符之一为结束,中个格式字符之一为结束,中 间可以插入附加格式字符间可以插入附加格式字符(也称修饰符也称修饰符)。 4.5.2 scanf函数函数(格式输入函数格式输入函数) 在第在第1章中已初步接触到了章中已初步接触到了scanf函数,在本节中再函数,在本节中再 作详细介绍。作详细介绍。 1. 一般形式一般形式 scanf(格式控制,地址表列格式控制,地址表列) “格式控制格式控制”的含义同的含义同printf函数;函数;“
29、地址表列地址表列”是是 由由 若干个地址组成的表列,可以是变量的地址,或字若干个地址组成的表列,可以是变量的地址,或字 符串的首地址。符串的首地址。 例例4.9用用scanf函数输入数据。函数输入数据。 main() int a,b,c; scanf(“%d%d%d”, printf(%d,%d, %dn,a,b,c); 图图4.84.8 运行时按以下方式输入运行时按以下方式输入a、b、c的值:的值: 3 4 5(输入输入a、b、c的值的值) 3,4,5 (输出输出a、b、c的值的值) area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f
30、, c =%7.2f, s =%7.2fn,a,b,c,s); printf(area=%7.2fn,area); 程序中第程序中第7行中行中sqrt()是求平方根的函数是求平方根的函数。由于。由于要调要调 用数学函数库中的函数,必须在程序的开头加一条用数学函数库中的函数,必须在程序的开头加一条 #include命令,把头文件命令,把头文件“math.h”包含到程序中来。包含到程序中来。 运行情况如下:运行情况如下: 3,4,6 a=3.00, b=4.00, c=6.00, s=6.50 area=5.33 例例4.11从键盘输入一个大写字母,要求改用小写字从键盘输入一个大写字母,要求改用小
31、写字 母输出。前面已介绍过大小写字母间转换的方法,母输出。前面已介绍过大小写字母间转换的方法, 根据此思路编出下面的程序。根据此思路编出下面的程序。 #include main() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2); 运行情况如下:运行情况如下: a a,65 a,97 习题习题 4.1 C语言中的语句有哪几类语言中的语句有哪几类?C语句与其他语言中语句与其他语言中 的语句有哪些异同的语句有哪些异同? 4.2 怎样区分表达式和表达式语句怎样区分表达式和表达式语句?C语言为什么要语言为什么要 设表达式语句设表达式语句?什么时候用表达式,什么时候用表达什么时候用表达式,什么时候用表达 式语句式语句? 4.3 C语言为什么要把输入输出的功能作为函数,语言为什么要把输入输出的功能作为函数, 而不作为语言的基本部分而不作为语言的基本部分? 4.4 若若a=3,b=4,c=5,x=12,y=24,z=-3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场2024年度物业管理合同:物业公司与商场之间的管理协议
- 2024年专属供货伙伴合同合同范本版B版
- 2024堵漏劳务合同范本
- 2024年专业通信工程分包合同样本版
- 2024定制版汽车租赁合作三方合同版B版
- 2024年度二手摩托车买卖合同范本样本下载2篇
- 2024年度文化艺术品展览合同(2024版)
- 法律事务科个人工作框架计划
- 2024分公司承包经营合同格式
- 幼儿园学期计划与孩子共同创造奇迹
- 《无人机概论》课程标准(高职)
- 继续教育情况登记表(范本)
- 外研版三起点三年级下单词(默写版)
- 2023中考真题汇编-二次函数
- 系统性红斑狼疮护理查房课件
- 心脏标志物(诊断学)课件
- 混凝土氯离子含量试验检测记录表(选择性电极法)
- 白内障手术前后眼内炎的预防诊断与治疗医学课件
- 风湿相关血小板减少
- 部编高中语文教材文言篇目
- 店招整治改造施工方案
评论
0/150
提交评论