260 likes | 353 Views
第五次课:. 2.12 数据的输出. 输入输出是以计算机内存为文体的 , 数据由计算机传到外部输出设备称为输出 ; 数据由外部输入设备传到计算机称为输入。 C 语言本身不提供输入输出语句 , 是由函数来实现的。 C 提供的函数以库的形式存放在系统。. 标准输入输出库函数 putchar( 输出字符 ) getchar ( 输入字符 ) printf (格式输出) scanf (格式输入) puts (输出字符串) gets (输入字符串) 标准输入输出库函数 stdio.h
E N D
第五次课: 2.12 数据的输出 • 输入输出是以计算机内存为文体的,数据由计算机传到外部输出设备称为输出;数据由外部输入设备传到计算机称为输入。 • C语言本身不提供输入输出语句,是由函数来实现的。C提供的函数以库的形式存放在系统。
标准输入输出库函数 putchar(输出字符) getchar(输入字符) printf(格式输出)scanf(格式输入) puts(输出字符串) gets(输入字符串) 标准输入输出库函数 stdio.h #include <stdio.h> 或 #include “stdio.h”
在头文件中包含了与用到的函数有关的信息,# include <文件名>命令都是放在程序的开头,因此这类文件称为“头文件”。 • Stdio.h是standard input & output的缩写,它包含了与标准I/O库有关的变量定义和宏定义。 数学函数 “math.h” 字符函数 “ctype.h” 字符串函数 “string.h”
一、字符数据的输入输出 1、字符输出函数 格式: putchar(c) 其中c为字符型或整型的常量、变量及其表达式 功能: 每次向屏幕输出一个字符供显示。 该函数可以输出控制字符和转义字符. 如:putchar(‘\”’); 【例】求以下程序运行结果 #include <stdio.h> main() { char x='a'; putchar(x); putchar('b'); putchar(x+2); putchar('b'+2); } 结果:abcd
例 # include <stdio.h> main() { char ch1,ch2; ch1=‘A’; putchar(‘*’); putchar(‘\n’); putchar(ch1); ch2= putchar(ch1+2); putchar(ch2); } 字符常量的输出 控制字符的输出 字符变量的输出 表达式值的输出 返回值的输出 结果:* ACC
【例一】 #include <stdio.h> main() { char a,b; a=getchar();b=getchar(); printf(“a=%c,b=%c\n”,a,b); } 运行时,如果—— 输入:Student 输出结果为 a=S,b=t 2.字符输入函数 格式: getchar( ) 功能: 从键盘上读入一个字符, getchar( )包含在stdio.h中; 该函数没有参数; 该函数一次只应读取一个字符; 该函数得到的字符可以赋值给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分 如:printf(“%c”,getchar()); putchar(getchar());
例 从终端输入一个字母以大写字母输出。 main() { char ch,c; ch=getchar(); c=ch>=‘a’&&ch<=‘z’?ch-32:ch; putchar(c); } 运行情况: 输入:a 输出结果: A
二、格式输出 • 格式输出函数 格式:printf(“格式控制字符串”,输出表列) 其中f为“格式(format)”的意思。 功能:按指定格式向显示器输出数据 • 输出表列:要输出的数据(可以没有,多个时以“,”分隔) • 格式控制字符串:包含两种信息 • 格式说明:%[格式字符],用于指定输出格式 • 普通字符或转义序列:原样输出 一般形式为: Printf(参数1,参数2,……参数n); • 格式字符
格式字符: 十进制整数 d,i 十六进制无符号整数 x,X 八进制无符号整数 o 不带符号十进制整数 u 单一字符 c 字符串 s 指数形式浮点小数 e,E 小数形式浮点小数 f e和f中较短一种 G,g 百分号本身 %% int a=567;printf ( “%d”,a); 567 int a=255;printf(“%x”,a); ff int a=65;printf(“%o”,a); 101 int a=567;printf(“%u”,a); 567 char a=65;printf(“%c”,a); A printf(“%s”,“ABC”); ABC float a=567.789;printf(“%e”,a); 5.677890e+002 float a=567.789;printf(“%f”,a); 567.789000 float a=567.789;printf(“%g”,a); 567.789 printf(“%%”); % • 说明 • 除x、e、g外,其它格式字符要用小写 • 格式字符与输出项个数应相同,按先后顺序一一对应 格式字符与输出项类型不一致,自动按指定格式输出
修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 对实数,指定小数点后位数(四舍五入) 对字符串,表示截取字符个数 .n 输出数据在域内左对齐(缺省右对齐) - 指定在有符号数的正数前显示正号(+) + 输出数值时指定左面不使用的空位置自动填0 0 # 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l • 附加格式说明符(修饰符)
例题: 例 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); 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”); } 例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a); main() {float a=123.444; printf(“%f\n”,a); printf(“%14.3f\n”,a); printf(“%6.4f\n”,a); printf(“%.4f\n”,a); } int x=-1; printf(“%x,%o,%d,%12x”,x,x,x,x); 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);
课后分析: • 对于格式输出函数printf()函数,不同的数据使用的格式符不同,规则比较多,课上要通过大量的练习让学生对比掌握。
第六次课: 目的要求: • 掌握格式输入函数scanf()函数的使用 • 学习顺序结构程序设计方法 重点难点: • 地址的含义及取地址符号&的用法 • 算法的概念及几个简单算法的表示
2.13 格式输入函数 • 格式输入函数 • 格式: scanf(“格式控制字符串”,地址表列) • 功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束 • 地址表列:由若干个变量的地址组成,地址常用取地址运算符&和变量名组成& • 格式字符:d,i,o,x,u,c,s,f,e
修饰符 功 能 h 用于d,o,x前,指定输入为short型整数 用于d,o,x前,指定输入为long型整数 l 用于e,f前,指定输入为double型实数 m 指定输入数据宽度,遇空格或不可转换字符则结束 抑制符,指定输入项读入后不赋给变量 * • 附加格式说明符(修饰符)
输入分隔符的指定 • 一般以空格、TAB或回车键作为分隔符 • 其它字符做分隔符:格式串中两个格式符间字符,输入时应原样输入 • 例:“%d%d%d”格式控制 • 3_ _ 4 _ _ 5 • 3 4 _ 5 • 3(tab)_ _ 4 5 scanf(“%d,%d”,&a,&b); scanf(“%d:%d”,&a,&b); scanf(“%d_ _%d”,&a,&b); scanf(“a=%d,b=%d”,&a,&b);
可以指定输入数据的列数,系统自动按它截 取所需数据 scanf(“%3d%3d”,&a,&b); scanf(“%3c”,&ch); 123456 c • 若%后有一个“*”,表示跳过指定列数 scanf(“%2d_ %*3d_ %2d”,&a,&b); 12_345_67 • 输入时不能规定精度 scanf(“%7.2f ”,&a); • Scanf函数至少有一个输入项,输入项必须用地址表示
说明: • 用“%c”格式符时,空格和转义字符作为有效字符输入 scanf(“%c%c%c”,&c1,&c2,&c3); • 输入数据时,遇以下情况认为该数据结束: • 遇空格、TAB、或回车 • 遇宽度结束 • 遇非法输入 scanf(“%d%c%f”,&a,&b,&c);
目的要求: • 了解C的语句组成及分类 • 难点: • c程序的顺序结构
第三章 顺序程序设计 • 程序 数据描述:定义数据类型和数据初值 数据操作:对数据进行加工,由语句 实现
if( )~else~ • switch • for( )~ • while( )~ • do~while( ) • continue • break • goto • return 分支 循环 辅助控制 • 3.1C语句概述 • C语句:以“;”作分隔符,编译后产生机器指令. • C语句分类 • 控制语句
表达式语句:表达式加分号构成。 赋值语句:可包含在其他表达式中, 如:if ((x=y)>0) z=x; 在if的条件中不能包含赋值语句 • 函数调用语句:函数调用语句由一次函数调用加一个分号(语句结束标志)构成. 如:printf(“This is a C program.\n”); • 空语句:仅由一个分号构成。显然,空语句什么操作也不执行。有时用来做被转向点,或用在循环体中
复合语句:用 {…}括起来的一组语句 • 一般形式: { [数据说明部分;] 执行语句部分; } • 说明: • “}”后不加分号 • 语法上和单一语句相同 • 复合语句可嵌套
文件包含预处理命令 变量定义 输入数据 输出数据 例 输入三角形边长,求面积 #include <math.h> #include <stdio.h> main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area);} 输入:3,4,6 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33
例 从键盘输入大写字母,用小写字母输出 #include "stdio.h" main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); } 输入:A 输出:A,65 a,97
#include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } 输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.00