第 3 章 输入输出

30
第3第 第第第第 3.1 C 语语语语语 3.2 语语语语语语语语语 3.3语语语语语语语语

Upload: manning

Post on 11-Jan-2016

68 views

Category:

Documents


2 download

DESCRIPTION

第 3 章 输入输出. 3.1 C 语句的概述 3.2 常用输出与输入函数 3.3 顺序结构程序设计. 3.1 C 语句的概述. 表达式语句 C 语言允许在任何一个表达式后面加一个分号 “ ; ” ,构成表达式语句。表达式语句的一般形式为: 表达式; 执行表达式语句就是计算表达式的值。表达式语句常用来描述算术运算、逻辑运算或产生某种特定动作的语句。 C 程序中,最常用的表达式语句是赋值语句,由赋值表达式加上一个分号构成的。一般形式为: 变量 赋值运算符 表达式; 例如: sum=0.0; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 3 章   输入输出

第 3 章 输入输出

3.1 C语句的概述3.2 常用输出与输入函数3.3顺序结构程序设计

Page 2: 第 3 章   输入输出

3.1 C 语句的概述 表达式语句

C 语言允许在任何一个表达式后面加一个分号“;”,构成表达式语句。表达式语句的一般形式为:

表达式; 执行表达式语句就是计算表达式的值。表达式语句常用来描

述算术运算、逻辑运算或产生某种特定动作的语句。 C 程序中,最常用的表达式语句是赋值语句,由赋值表达式

加上一个分号构成的。一般形式为: 变量 赋值运算符 表达式; 例如: sum=0.0; circuit=2*3.14*radius; s+=6;

Page 3: 第 3 章   输入输出

3.1 C 语句的概述 赋值语句有计算的功能:赋值号左边必须是变量名,

右边可以是常量、变量、运算符、函数以及由常量、变量、运算符、函数构成的表达式。赋值语句是将右边表达式的值赋给左边的变量中去。

赋值表达式和赋值语句有区别: 赋值表达式是一种表达式,它可以出现在任何允许表

达式出现的地方,而赋值语句则不能。 给变量赋初值是变量声明的一部分,赋初值后的变量

与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。

在变量声明中,不允许连续给多个变量赋初值,而赋值语句允许连续赋值。

Page 4: 第 3 章   输入输出

3.1 C 语句的概述 控制语句

条件语句 if ( ) ~ else ~ (分支语句) switch ( ) ~ (多路分支选择语句)

循环语句 for ( ) ~ (循环结构语句) while ( ) ~ (循环结构语句) do ~ while ( ) (循环结构语句)

转向语句 goto (转向语句) continue (结束本次循环语句) break (中止执行 switch 或循环语句) return (函数返回语句)

Page 5: 第 3 章   输入输出

3.1 C 语句的概述 函数调用语句

函数调用语句是由一次函数调用加一个分号构成的一个语句。其一般形式为:函数名 ( 实际参数表 ) ;

执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。

例如: printf("this is a C program."); 空语句

空语句仅由一个分号(;)构成。 程序执行空语句时不产生任何动作。空语句有时用来做转折

点或延时,如循环语句中的循环体为空语句可起到延时的作用。

Page 6: 第 3 章   输入输出

3.1 C 语句的概述 复合语句

复合语句是由一对花括号 { } 括起来的一组语句。复合语句内的各条语句都必须以分号结束,在括号“ }” 外不能加分号。

例如 , 实现 a,b 两个变量值的交换 * : {t=a; a=b; b=t; }

Page 7: 第 3 章   输入输出

3.2 常用输出与输入函数 在使用标准库函数时,要在进行调用这类函数的源程序

的开始位置,包含一条编译预预处理指令:#include "stdio.h"  

格式输出函数 printf 函数的格式

printf 函数的功能是按指定格式向终端(通常是显示器)输出若干个任意类型的数据。 printf 函数的一般调用形式为:

printf (格式控制字符串,输出表列);例如: printf("Hello,World!"); printf("The sum is :%f\n",sum);

Page 8: 第 3 章   输入输出

3.2 常用输出与输入函数说明: 格式控制字符串

格式控制字符串(简称格式串)必须用引号括起来,包括: 普通字符:也就是需要原样输出的的字符信息。 格式说明符:简称格式符,由 % 开头、后面紧跟

一个格式描述符构成。格式符的作用是指定要输出的数据的输出形式。

转义字符:以“ \” 开头的字符序列。转义字符在输出时按其含义完成相应的控制功能。

输出表列 输出表列是需要输出的数据,可以是变量、常量或表达式。

输出表列可以是零项、一项或多项,若多于一项则各项之间用逗号分隔。

输出表列和格式说明符在个数与类型上应相匹配。 例如, printf("\n x = %d , y = %f ", x , y+1);

Page 9: 第 3 章   输入输出

3.2 常用输出与输入函数 printf 的格式说明符 输出类型 格式说明符 功 能

%d 输出带符号的十进制整数

%o 输出无符号的八进制整数

%u 输出无符号的十进制整数 输出整型数据

%x 输出无符号的十六进制整数

%c 输出一个字符 输出字符型数据

%s 输出一个字符串

%f 以小数形式输出浮点数,隐含输出 6位小数

%e 以指数形式输出浮点数,保留六位小数 输出实型数据

%g 由系统自动选取%e或%f格式符,使用二者中输

出宽度较短者,且不输出无意义的零

Page 10: 第 3 章   输入输出

3.2 常用输出与输入函数 【例 3.1】分析下列程序的输出情况。 main( ) { int a,b; float f1,f2,sum; char ch; a=66; b= 1; f1=3.1415; f2=11.88; sum=f1+f2; ch='X'; printf("\n%d ,%c ,%d,%o ,%f ,%c, %d ",a,a,b,b,sum,ch,ch); printf("%s","Very good!"); }

Page 11: 第 3 章   输入输出

3.2 常用输出与输入函数输出结果为:

66, B ,–1 ,177777, 15.021500 ,X ,88 ,Very good!

整型变量可以字符的形式输出,而字符型变量也可以整数的形式输出, ASCII 码是它们之间的桥梁;

使用格式说明符 %f 输出时,整数部分全部如数输出,小数部分按系统默认宽度( 6位小数)输出。

printf 函数的附加格式说明符

附加格式说明符 说 明

字母 l 用于长整型整数和 double 类型实数,可以加在格式字符 d,o,x,u,f,e,g前面

m (代表一个正整数) 数据的输出宽度

.n (代表一个正整数) 对实数,表示输出 n位小数;对字符串,表示截取的字符个数

输出的数字或字符向左靠齐

Page 12: 第 3 章   输入输出

3.2 常用输出与输入函数 在 % 与格式符之间插入一个整数表示指定输出的宽度。若指定的输

出宽度大于实际数据的宽度,那么数据向右靠齐,左边补空格;若指定的宽度小于实际数据的宽度,那么按实际数据的宽度输出。

可以采用“ m.n” 的格式修饰格式符来输出一个实数,这里m 和 n是两个整数。

对于字符串,采用“ m.n” 的附加格式符来修饰格式符表示指定字符串的总宽度为 m ,不足m 则向右靠齐,左补空格。 n 表示指定截取实际字符串的前 n 个字符输出。也可以省略m ,不指定总宽度。

可以在宽度之前加一个“”来指定输出的数据向左靠齐。 【例 3.2】分析下列程序的输出情况。main( ){ int a=5,b=7; float x=67.8564,y=-789.124; char c='A'; long n=1234567;

Page 13: 第 3 章   输入输出

3.2 常用输出与输入函数 unsigned long u=65535; printf("\n %d%d ",a,b); printf("\n %3d%3d ",a,b); printf("\n %f,%f ",x,y); printf("\n %-10f,%-10f ",x,y); printf("\n %8.2f,%8.2f,%.4f,%.4f,%3f,%3f ",x,y,x,y,x,y); printf("\n %e,%10.2e ",x,y); printf("\n %c,%d,%o,%x ",c,c,c,c); printf("\n %ld,%lo,%x ",n,n,n); printf("\n %u,%o,%x,%d ",u,u,u,u); printf("\n %s,%5.3s ","COMPUTER","COMPUTER"); }

Page 14: 第 3 章   输入输出

3.2 常用输出与输入函数 程序的运行结果是:57 5 767.856400,-789.12402367.856400,-789.124023 67.86,-789.12,67.856400,-789.124023,67.856400,-789.124023

6.785640e+01,-7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER,COM

Page 15: 第 3 章   输入输出

3.2 常用输出与输入函数printf函数在使用时的注意事项 printf 函数可以输出常量、变量和表达式的值。但格式

控制中的格式符必须按从左到右的顺序,与输出项表中每个数据在类型上一一匹配,否则将导致数据输出错误。

类型转换字符 x,e,g 可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也要大写。除 x,e,g 外,其他类型转换字符必须用小写字母,例如%f 不能写成 %F。

在输入 long整型数据时,一定要使用格式 %ld 。如果只用了%d ,将输出错误数据。

若需要输出百分号“ %” ,则应在格式串中用连续的两个百分号“ %%” 表示。

类型转换字符紧跟在“ %” 后面时作为类型转换字符,否则将作为普通字符处理。

printf 函数的返回值通常是本次调用中输出字符的个数。

Page 16: 第 3 章   输入输出

3.2 常用输出与输入函数 格式输入函数

scanf 函数的格式 格式输入函数 scanf 的功能是用来从外部输入设备(通常是键盘),

向程序中的变量输入一个或多个任意类型数据。 scanf( ) 函数的一般调用形式为:

scanf (“格式控制”,地址表列);例如: scanf("%d%f",&n,&u);

说明: 格式控制字符串

普通字符:普通字符在输入数据时,必须在对应位置上原样输入这些字符。

格式说明符:用 % 开头后面跟一个字母(也可以在其中间增加附加字符),它规定了输入项对应的输入数据格式。同样格式说明符要在个数和类型上与输入项相匹配。

Page 17: 第 3 章   输入输出

3.2 常用输出与输入函数 地址表列

地址表列中是要输入数据的变量的存储单元地址。 “&” 是地址运算符 【例 3.4】用 scanf 函数输入数据。 main( ) { int x,y,z; scanf("%d,%d,%d",&x,&y,&z); printf("x=%d,y=%d,z=%d",x, y, z); } 程序运行时输入: 1,2,3↙ 输出: x=1,y=2,z=3

scanf 函数的格式说明符 scanf 函数常用的格式说明符 scanf 函数常用的附加格式说明符

Page 18: 第 3 章   输入输出

3.2 常用输出与输入函数 输入类型 格式说明符 功能

%d 输入十进制整数

%u 输入无符号的十进制整数

%o 输入八进制整数 输入整型数据

%x 输入十六进制整数

%c 输入单个字符

输入字符型数据 %s

输入一个字符串,将字符串送到一个字符数组中。

输入时以非空白字符开始,以第一个空白字符结束。

%f 用小数形式或指数形式输实数。

%e 同%f,e与 f、g可以相互替换。 输入实型数据

%g 同%f,e与 f、g可以相互替换。

scanf 函数常用的格式说明符

Page 19: 第 3 章   输入输出

3.2 常用输出与输入函数

scanf 函数常用的附加格式说明符 scanf 函数在使用时的注意事项

scanf 函数没有计算功能,因此输入的数据只能是常量,而不能是表达式。 输入常整型和 double 类型的数据时必须在 scanf 函数的格式符中加 l ,否则输入的数据不能被正确的接收。

在输入多个整型数据或实型数据时,可以用一个或若干个空格、回车键或制表符( Tab )作为间隔。但在输入多个字符型数据时,数据之间不可以使用分隔符。

附加字符 功能

字母 l 用于输入长整型数据和 double类型数据

字母 h 用于输入短整型数据%hd,%ho,%hx

域宽 m 指定输入数据所占的列数

* 表示本输入形在读入后不赋给相应的变量。

Page 20: 第 3 章   输入输出

3.2 常用输出与输入函数 输入格式中,除格式说明符之外的普通字符应原样输入。 如果指定了输入数据的宽度,系统则自动按它截取所需的数据。

在输入实数时,不能规定小数位。 例如: scanf(“%4d%4d%4d”,&x,&y,&z); 输入: 123

434565678 则系统自动将 1234 赋予 x ,将 3456 赋予 y ,将 5678 赋予 z 。 % 后面使用“ *”附加符,表示跳过它相应的数据。 例如: scanf(“%4d,%*4d,%4d”,&x,&y); 输入: 1234 , 3456 , 5678 则系统将 1234 赋给 x,将 5678赋给 y, 而第二个数据“ 345

6” 被跳过不赋给任何变量。 由于 scanf( ) 函数本身不具有显示提示信息功能,为改善人机

交互性,在设计输入操作时,一般先用 printf( ) 函数输出提示信息,然后再用 scanf( ) 函数进行数据输入。

Page 21: 第 3 章   输入输出

3.2 常用输出与输入函数 字符输出函数

putchar( ) 函数的功能是将给定的一个字符常量、或一个字符变量、或者是一个字符型的表达式输出到终端,一般情况下终端可以看成是显示器屏幕。

putchar( ) 函数的一般调用形式为: putchar(c); 即把 c 的值输出到显示器上,这里的 c 可以是字符型变量

或常量,可以是普通字符,也可以是转义字符。 putchar( ) 函数只能用于单个字符的输出,并且一次只能输

出一个字符; putchar( ) 函数在使用时,必须在程序(或文件)的开头加

上编译预处理命令,即: #include “stdio.h”

Page 22: 第 3 章   输入输出

3.2 常用输出与输入函数【例 3.5】 putchar( ) 函数应用举例。#include "stdio.h"main( ){ char a,b,c,d; a='g'; b='o'; c=111; /*“111” 是字母“ o” 的十进制 ASCII码 */ d='d'; putchar('\n'); putchar(a); putchar(b); putchar(c); putchar(d);}输出结果为:good

Page 23: 第 3 章   输入输出

3.2 常用输出与输入函数 字符输入函数

getchar( ) 函数的功能是从键盘取得一个用户输入的字符。并将此字符的 ASCII码值作为函数返回值。应用时在程序中一般用另一个变量接收读入的字符。

getchar( ) 函数的一般调用形式为: c=getchar( ); 执行上面的调用时,变量 c 将得到用户从键盘输入的一个字

符值,这里的 c 可以是字符型或整型变量。 getchar( ) 函数只能用于单个字符的输入,且一次只能输入一

个字符; getchar( ) 函数在使用时,必须在程序(或文件)的开头加上编译预处理命令,即: #include “stdio.h”

Page 24: 第 3 章   输入输出

3.2 常用输出与输入函数【例 3.7 】字符型数据的输入举例。#include"stdio.h"main( ){ char c1,c2; printf("\nplease input No.1: "); c1=getchar(); putchar(c1); flushall(); printf("\nplease input No.2: "); c2=getchar(); putchar(c2); printf("\nend!");}

Page 25: 第 3 章   输入输出

3.2 常用输出与输入函数则程序的运行情况为: please input No.1: a

a

please input No.2: b

b

end!

顺序结构程序设计思想 顺序结构的程序通常由三部分组成: 输入数据 进行处理 输出结果

Page 26: 第 3 章   输入输出

3.3 顺序结构程序设计 【例 3.8】已知长方体的长、宽和高,计算长方体的体积。

开始

结束

输入长方体的长、宽和高

输出长方体的体积

利用公式计算体积

Page 27: 第 3 章   输入输出

3.3 顺序结构程序设计 main( )

{float x, y,h,v;

printf("\ninput x, y, h:");

scanf("%f,%f,%f",&x,&y,&h); /* 输入长方体的长、宽和高 */

v=x*y*h; /* 计算长方体的体积 */

printf("\n The volume is:",v); /* 输出长方体的体积*/

}

Page 28: 第 3 章   输入输出

3.3 顺序结构程序设计 顺序结构程序设计举例 【例 3.9 】已知某个三角形的底和高,计算其面积。main( ){ float width,height,area; printf("\nEnter width and height:"); /* 输出提示信息 */ scanf("%f,%f",&width,&height); /* 输入底和高 */ area=(width*height)/2.0; /* 计算面积 */ printf("\nThe arae is :%f ",area); /* 输出面积的值 */ }运行情况如下:Enter width and height:2.5,4The area is :5.000000

Page 29: 第 3 章   输入输出

3.3 顺序结构程序设计【例 3.10】从键盘输入一个大写字母,将其转换成小写字母输出。 #include "stdio.h" main( ) { char ch1,ch2; printf("\nPlease put into ch1:"); ch1=getchar( ); printf("\n%c,%d",ch1,ch1); /* 输出大写字母及对应的 ASCII 码的十进制数 */ ch2=ch1+32; /* 将大写字母转换成小写字母 */ printf("\n%c,%d",ch2,ch2);/* 输出小写字母及对应的 ASCII 码的十进制数 */ } 运行情况如下: Please put into ch1:A↙ A,65 a,97

Page 30: 第 3 章   输入输出

3.3 顺序结构程序设计【例 3.11 】某商场营业员工资的计算方法是:每月 300 元的基本工资加该月总销

售额的 8.5% 提成。要求编一程序,输入某营业员的月总销售额,计算并输出该营业员的月收入。

问题分析:设总销售额为 m ,月收入为 salary ,则: salary=300+m*8.5%main( ){ float m,salary; printf("\nEnter total sales: "); /* 输出提示信息 */ scanf("%f",&m); /* 输入月总销售额 */ salary=300+m*0.085; /* 计算月收入 */ printf("\nsalary is :%5.2f ",salary);}运行情况:Enter total sales :3500 ↙Salary is :597.50