26
输输输输输输输输输输输输输 输输输输输输输输输输输输输 , , 输输输输输输 输输输输输 输输输输输输 输输输输输 输输输输输输 输输输输输输 ; ; 输输输输输输输输输 输输输输输输输输 输输输输输输输输输 输输输输输输输输 C C 输输输输输输输输输输输输输 输输输输输输输输输输输输输 , , 输输输输输输输输输输输输输输输输C C 输输输输输输输输输输输输输输输输输输输输输输输输输输2.12 2.12 数数数数数 数数数数数 数数数数数数数数

2.12 数据的输出

Embed Size (px)

DESCRIPTION

第五次课:. 2.12 数据的输出. 输入输出是以计算机内存为文体的 , 数据由计算机传到外部输出设备称为输出 ; 数据由外部输入设备传到计算机称为输入。 C 语言本身不提供输入输出语句 , 是由函数来实现的。 C 提供的函数以库的形式存放在系统。. 标准输入输出库函数 putchar( 输出字符 ) getchar ( 输入字符 ) printf (格式输出) scanf (格式输入) puts (输出字符串) gets (输入字符串) 标准输入输出库函数 stdio.h - PowerPoint PPT Presentation

Citation preview

Page 1: 2.12  数据的输出

输入输出是以计算机内存为文体的输入输出是以计算机内存为文体的 ,, 数据数据由计算机传到外部输出设备称为输出由计算机传到外部输出设备称为输出 ;; 数数据由外部输入设备传到计算机称为输入。据由外部输入设备传到计算机称为输入。

CC 语言本身不提供输入输出语句语言本身不提供输入输出语句 ,, 是由函是由函数来实现的。数来实现的。 CC 提供的函数以库的形式存提供的函数以库的形式存放在系统。放在系统。

2.12 2.12 数据的输出数据的输出第五次课:第五次课:

Page 2: 2.12  数据的输出

标准输入输出库函数标准输入输出库函数 putchar(putchar( 输出字符输出字符 ) ) getchar getchar(( 输入字符输入字符 ))

printfprintf (格式输出)(格式输出) scanfscanf (格式(格式输入) 输入)

putsputs (输出字符串) (输出字符串) getsgets (输入字符(输入字符串)串)

标准输入输出库函数 标准输入输出库函数 stdio.hstdio.h #include <stdio.h> #include <stdio.h> 或 或 #include “s#include “s

tdio.h”tdio.h”

Page 3: 2.12  数据的输出

在头文件中包含了与用到的函数有关的信息,在头文件中包含了与用到的函数有关的信息, # in# include <clude < 文件名文件名 >> 命令都是放在程序的开头,因此命令都是放在程序的开头,因此这类文件称为“头文件”。这类文件称为“头文件”。

Stdio.hStdio.h 是是 standard input & outputstandard input & output 的缩写,它的缩写,它包含了与标准包含了与标准 I/OI/O 库有关的变量定义和宏定义。库有关的变量定义和宏定义。

数学函数 “数学函数 “ math.hmath.h”” 字符函数 “字符函数 “ ctype.hctype.h”” 字符串函数 “字符串函数 “ string.hstring.h””

Page 4: 2.12  数据的输出

一、字符数据的输入输出一、字符数据的输入输出11 、字符输出函数、字符输出函数 格式:格式: putchar(putchar(cc))

其中其中 cc 为字符型或整型的常为字符型或整型的常量、变量及其表达式量、变量及其表达式

功能:功能: 每次向屏幕输出一个字符供显每次向屏幕输出一个字符供显

示。示。 该函数可以输出控制字符和转该函数可以输出控制字符和转

义字符义字符 ..如:如: putchar(‘\”’);putchar(‘\”’);

【例】求以下程序运行结果 #include <stdio.h> main() { char x='a'; putchar(x); putchar('b'); putchar(x+2); putchar('b'+2); }

结果: abcd

Page 5: 2.12  数据的输出

例 例 # include <stdio.h># include <stdio.h> main()main() {{ char ch1,ch2;char ch1,ch2; ch1=‘A’;ch1=‘A’; putchar(‘*’);putchar(‘*’); putchar(‘\n’);putchar(‘\n’); putchar(ch1);putchar(ch1); ch2= putchar(ch1+2);ch2= putchar(ch1+2); putchar(ch2);putchar(ch2); }}

字符常量的输出 控制字符的输出

字符变量的输出

表达式值的输出

返回值的输出

结果: *

ACC

Page 6: 2.12  数据的输出

22 .字符输入函数.字符输入函数 格式:格式: getchar( )getchar( ) 功能功能 ::从键盘上读入一个字符,从键盘上读入一个字符,getchar( )getchar( ) 包含在包含在 stdio.hstdio.h 中;中;该函数没有参数;该函数没有参数;该函数一次只应读取一个字该函数一次只应读取一个字符;符;该函数得到的字符可以赋值该函数得到的字符可以赋值给一个字符变量或整型变量,给一个字符变量或整型变量,也可以不赋给任何变量,作也可以不赋给任何变量,作为表达式的一部分为表达式的一部分如:如: printf(“%c”,getcharprintf(“%c”,getchar());()); putchar(getchar());putchar(getchar());

【例一】#include <stdio.h>main(){ char a,b; a=getchar() ; b=getchar(); printf(“a=%c,b=%c\n”,a,b); } 运行时,如果—— 输入: Student 输出结果为 a=S,b=t

Page 7: 2.12  数据的输出

例 从终端输入一个字母以大写字母输出。例 从终端输入一个字母以大写字母输出。 main()main() {{ char ch,c;char ch,c; ch=getchar();ch=getchar(); c=ch>=‘a’&&ch<=‘z’?ch-32:ch;c=ch>=‘a’&&ch<=‘z’?ch-32:ch; putchar(c);putchar(c); }} 运行情况:

输入: a输出结果:A

Page 8: 2.12  数据的输出

二、格式输出二、格式输出 格式输出函数格式输出函数

格式:格式: printf(“printf(“ 格式控制字符串”,输出表列格式控制字符串”,输出表列 ))其中其中 ff 为“格式(为“格式( format)”format)” 的意思。的意思。功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据 输出表列:要输出的数据(可以没有,多个时以“输出表列:要输出的数据(可以没有,多个时以“ ,”,”

分隔)分隔) 格式控制字符串:包含两种信息格式控制字符串:包含两种信息

格式说明:格式说明: %%[[ 格式字符格式字符 ]] ,用于指定输出格式,用于指定输出格式 普通字符或转义序列:原样输出普通字符或转义序列:原样输出

一般形式为:一般形式为:Printf(Printf( 参数参数 11 ,参数,参数 22 ,……参数,……参数 n);n); 格式字符格式字符

Page 9: 2.12  数据的输出

d,ix,Xoucs

e,Ef

G,g%%

格式字符:

十六进制无符号整数

不带符号十进制整数

十进制整数

指数形式浮点小数

单一字符字符串

八进制无符号整数

小数形式浮点小数e 和 f 中较短一种百分号本身

int a=567;printf ( “%d”,a);

int a=255;printf(“%x”,a);

int a=65;printf(“%o”,a);

int a=567;printf(“%u”,a);

char a=65;printf(“%c”,a);

printf(“%s”,“ABC”);

float a=567.789;printf(“%e”,a);

float a=567.789;printf(“%f”,a);

float a=567.789;printf(“%g”,a);

printf(“%%”);

567

ff

101

567

A

ABC

5.677890e+002

567.789000

567.789

%

说明除 x 、 e 、 g 外,其它格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应

格式字符与输出项类型不一致 , 自动按指定格式输出

Page 10: 2.12  数据的输出

.n对实数 , 指定小数点后位数 ( 四舍五入 )对字符串 , 表示截取字符个数

修饰符 功 能m 输出数据域宽 , 数据长度 <m, 左补空格 ; 否则按实际输出

输出数据在域内左对齐(缺省右对齐 )

-

指定在有符号数的正数前显示正号(+)

+

输出数值时指定左面不使用的空位置自动填0

0

在八进制和十六进制数前显示前导 0,0x

#

在 d,o,x,u 前,指定输出精度为 long型在 e,f,g 前,指定输出精度为 double型

l

附加格式说明符(修饰符)

Page 11: 2.12  数据的输出

int x=1,y=3; printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);

int x=7281; printf(“x=%3d,x=%6d”,x,x);

long a=135790; printf(“%ld,%8ld”,a,a);

int x=-1; printf(“%x,%o,%d,%12x”,x,x,x,x);

main(){printf(“\n*s1=%15s*”,”chinabeijing”); printf(“\n*s2=%-5s*”,”chi”); printf(“\n*s3=%15.3s*”,”chinabeijing”); printf(“\n*s4=%.4s*”,”chinabeijing”); printf(“\n*s5=%-15.3s*”,”chinabeijing”);}

main(){float a=123.444; printf(“%f\n”,a); printf(“%14.3f\n”,a); printf(“%6.4f\n”,a); printf(“%.4f\n”,a);}

例题:例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%+08d\n”,a); printf(“+010.2f\n”,f);

例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a);

Page 12: 2.12  数据的输出

课后分析:课后分析: 对于格式输出函数对于格式输出函数 printf()printf() 函数,不同的函数,不同的

数据使用的格式符不同,规则比较多,课数据使用的格式符不同,规则比较多,课上要通过大量的练习让学生对比掌握。上要通过大量的练习让学生对比掌握。

Page 13: 2.12  数据的输出

第六次课:第六次课:目的要求:目的要求: 掌握格式输入函数掌握格式输入函数 scanf()scanf() 函数的使用函数的使用 学习顺序结构程序设计方法学习顺序结构程序设计方法

重点难点:重点难点: 地址的含义及取地址符号地址的含义及取地址符号 && 的用法的用法 算法的概念及几个简单算法的表示算法的概念及几个简单算法的表示

Page 14: 2.12  数据的输出

2.13 2.13 格式输入函数格式输入函数 格式输入函数格式输入函数

格式格式 : scanf(“: scanf(“ 格式控制字符串”,地址表列)格式控制字符串”,地址表列) 功能:按指定格式从键盘读入数据,存入地址表功能:按指定格式从键盘读入数据,存入地址表

指定的存储单元中指定的存储单元中 ,, 并按回车键结束并按回车键结束地址表列:由若干个变量的地址组成,地址常用地址表列:由若干个变量的地址组成,地址常用取地址运算符取地址运算符 && 和变量名组成和变量名组成 &&

格式字符格式字符 :d,i,o,x,u,c,s,f,e:d,i,o,x,u,c,s,f,e

Page 15: 2.12  数据的输出

l

修饰符 功 能h

m

*

用于 d,o,x 前,指定输入为 short 型整数用于 d,o,x 前,指定输入为 long 型整数用于 e,f 前,指定输入为 double 型实数

指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量

附加格式说明符(修饰符)

Page 16: 2.12  数据的输出

输入分隔符的指定输入分隔符的指定 一般以空格、一般以空格、 TABTAB 或回车键作为分隔符或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符 其它字符做分隔符:格式串中两个格式符

间字符间字符 ,, 输入时应原样输入输入时应原样输入

例:“例:“ %d%d%d”%d%d%d” 格式控制格式控制 3_ _ 4 _ _ 53_ _ 4 _ _ 5 33 4 _ 54 _ 5 3(tab)_ _ 43(tab)_ _ 4 55

scanf(“%d,%d”,&a,&b);scanf(“%d:%d”,&a,&b);scanf(“%d_ _%d”,&a,&b);scanf(“a=%d,b=%d”,&a,&b);

Page 17: 2.12  数据的输出

可以指定输入数据的列数,系统自动按它截可以指定输入数据的列数,系统自动按它截 取所需数据取所需数据

scanf(“%3d%3d”,&a,&b);scanf(“%3c”,&ch);

scanf(“%2d_ %*3d_ %2d”,&a,&b);

123456 c

12_345_67

scanf(“%7.2f ”,&a);

若 % 后有一个“ *” ,表示跳过指定列数

输入时不能规定精度

Scanf 函数至少有一个输入项,输入项必须用地址表示

Page 18: 2.12  数据的输出

说明:说明: 用“用“ %c”%c” 格式符时,空格和转义字符作为格式符时,空格和转义字符作为

有效字符输入有效字符输入

scanf(“%c%c%c”,&c1,&c2,&c3);

scanf(“%d%c%f”,&a,&b,&c);

输入数据时,遇以下情况认为该数据结束:

遇空格、 TAB 、或回车遇宽度结束遇非法输入

Page 19: 2.12  数据的输出

目的要求:目的要求: 了解了解 CC 的语句组成及分类的语句组成及分类 难点:难点: cc 程序的顺序结构程序的顺序结构

Page 20: 2.12  数据的输出

第三章 顺序程序设计第三章 顺序程序设计 程序程序 数据描述:定义数据类型和数据初数据描述:定义数据类型和数据初值值

数据操作:对数据进行加工,由语数据操作:对数据进行加工,由语句 句

实现实现

Page 21: 2.12  数据的输出

§3.13.1 C 语句概述C 语句 : 以“ ;” 作分隔符 , 编译后产生机器指令 .C 语句分类

控制语句if( )~else~ switchfor( )~while( )~do~while( )continuebreakgotoreturn

分支

循环

辅助控制

Page 22: 2.12  数据的输出

表达式语句:表达式加分号构成。表达式语句:表达式加分号构成。 赋值语句赋值语句 :: 可包含在其他表达式中可包含在其他表达式中 ,, 如如 :if ((x=y)>0) z=x; :if ((x=y)>0) z=x; 在在 ifif 的条件中不能包含的条件中不能包含赋值语句赋值语句

函数调用语句函数调用语句 :: 函数调用语句由一次函数函数调用语句由一次函数调用加一个分号调用加一个分号 (( 语句结束标志语句结束标志 )) 构成构成 ..如如 :printf(“This is a C program.\n”);:printf(“This is a C program.\n”);

空语句空语句 ::仅由一个分号构成。显然,空语仅由一个分号构成。显然,空语句什么操作也不执行句什么操作也不执行。。有时用来做被转向有时用来做被转向点点 ,, 或用在循环体中或用在循环体中

Page 23: 2.12  数据的输出

复合语句:用 复合语句:用 {…}{…}括起来的一组语句括起来的一组语句一般形式: 一般形式: { [{ [ 数据说明部分;数据说明部分; ]] 执行执行语句部分;语句部分;

} } 说明:说明:

““}”}” 后不加分号后不加分号语法上和单一语句相同语法上和单一语句相同复合语句可嵌套复合语句可嵌套

Page 24: 2.12  数据的输出

例 输入三角形边长,求面积

#include <math.h>#include <math.h>#include <stdio.h>#include <stdio.h>main()main(){ float a,b,c,s,area;{ float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c);scanf("%f,%f,%f",&a,&b,&c); s=1.s=1.00/2*(a+b+c);/2*(a+b+c); area=area=sqrtsqrt(s*(s-a)*(s-b)*(s-c));(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",

a,b,c,s);a,b,c,s); printf("area=%7.2f\n",area);}printf("area=%7.2f\n",area);}

文件包含预处理命令

变量定义输入数据

输出数据

输入: 3,4,6 输出: a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33

Page 25: 2.12  数据的输出

例 从键盘输入大写字母,用小写字母输出

#include "stdio.h"#include "stdio.h"main()main(){ char c1,c2;{ char c1,c2; c1=getchar();c1=getchar(); printf("%c,%d\n",c1,c1);printf("%c,%d\n",c1,c1); c2=c1+32;c2=c1+32; printf("%c,%d\n",c2,c2);printf("%c,%d\n",c2,c2);}}

输入: A 输出: A,65 a,97

Page 26: 2.12  数据的输出

#include <stdio.h>#include <stdio.h>#include <math.h>#include <math.h>main()main(){ float a,b,c,disc,x1,x2,p,q;{ float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c);scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c;disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a);p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q;x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,

x2);x2);}} 输入: a=1,b=3,c=2

输出: x1=-1.00 x2=-2.00