
《c语言程序设计教学资料》第4章---键盘输入与屏幕输出.ppt
45页第四章键盘输入与屏幕输出,第四章键盘输入与屏幕输出,内容提要:,字符输入输出函数 格式输入输出函数,,所谓输入输出是以计算机主机为主体而言的 输出:从计算机向外部输出设备(显示器,打印机)输出数据 输入:从输入设备(键盘,鼠标,扫描仪)向计算机输入数据C语言本身不提供输入输出语句,输入和输出操作是由C函数库 中的函数来实现的 例如:字符输入函数: getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf,使用库函数时,要用预编译指令#include将有关的“头文件”, 即: stdio.h,包括到用户源文件中,#include 或#include “stdio.h”,字符输出,字符输出函数 - 格式:putchar(c) - 参数: c为字符或整型常量、变量或表达式 功能:把字符c输出到显示器上,例:先后输出BOY三个字符字符输出,#include main () { char a='B',b='O',c='Y'; putchar(a); putchar(b); putchar(c); putchar ('\n'); },运行结果:BOY,字符输入,字符输入函数 格式:getchar() 无参数 功能:接收从键盘输入的一个字符 函数值为输入的字符值 当输入多个字符时,多余字符作废,例:输入单个字符。
#include void main() { char c; c=getchar(); putchar(c); putchar(‘\n’); },字符输入,字符输入/输出,例:从键盘输入一个大写英文字母,将其转换为小写字母后,再显示到屏幕上include main() { char ch; printf(“press a key and then press enter:”); ch=getchar(); ch=ch+32; putchar(ch); putchar(‘\n’); },运行结果:press a key and then press enter: B b,getchar()没有参数 getchar(ch) 错,例:从键盘输入BOY三个字符,然后把它们输出到屏幕解题思路: 用3个getchar函数先后从键盘向计算机输入BOY三个字符 用putchar函数输出,字符输入/输出,#include main () { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); },运行结果:BOY,,字符输入/输出,#include main () { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); },,,putchar(getchar());,,字符输入/输出,#include main () { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); },,,putchar(getchar());,putchar(getchar());,,字符输入/输出,#include main () { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); },,,putchar(getchar());,putchar(getchar());,putchar(getchar());,,字符输入/输出,#include main () { char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); putchar('\n'); },putchar(getchar());,putchar(getchar());,putchar(getchar());,运行结果:BOY,,字符输入/输出,格式化输出,格式输出函数: printf(“格式控制字符串”); printf(“格式控制字符串”,输出参数表);,①普通字符或转义序列 ②格式命令:以%开始,%(格式修饰符)格式字符,用于指定输出格式,输出表列:要输出的数据(多个时以“,”分隔) 格式控制字符串:,格式化输出,例:printf(“press a key and then press enter:”);,printf(“a=%d b=%f\n”, a,b);,转义字符,普通字符串,格式说明,输出参数表,例:printf(“welcome\nto\nBeijing!\n”);,输出:welcome to Beijing!,格式化输出,# include main() { char ch; printf(“press a key and then press enter:”); ch=getchar(); ch=ch+32; printf(“%c, %d\n”, ch, ch); },例:从键盘输入一个大写英文字母,将其转换为小写字母后,再将转换后的小写字母及十进制ASCII码值显示到屏幕上。
结果:press a key and then press enter: B b, 98,格式字符,函数printf()的格式转换说明,格式修饰符,函数printf()的附加格式转换说明,,,格式化输出,% - 0 m.n l/h d(x…),格式说明引导符号,指定左对齐输出,指定空位填0,指定输出域及精度,输出长度修正,指定输出数据类型,格式字符,格式修饰符,,%d格式符,用来输出十进制整数 几种用法: ① %d:按十进制整型数据的实际长度输出 ② %md:m为指定的输出字段的宽度如果数据的位数小于m, 则左端补以空格,若大于m,则按实际位数输出 例: printf(″%4d,%4d″,a, b); 若a=123,d=12345,则输出结果为 123,12345 ③ %ld:输出长整型数据 例: long a=135790;/* 定义a为长整型变量*/ printf(″%ld″,a);,%o格式符,以八进制整数形式输出 例:int a=-1; printf(“%d,%o“,a,a); -1在内存单元中的存放形式(以补码形式存放)如下: 1111111111111111 输出为: -1,177777 对长整数(long型)可以用“%lo”格式输出。
还可以指定字段宽度, 例:printf(“%8o“,a); 输出为: 177777 (数字前有2个空格),%s格式符,输出字符串① %s例如: printf(″%s″,″CHINA″) 输出字符串“CHINA”(不包括双引号) ② %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长小于m,则左补空格 ③ %-ms,若串长小于m,字符串向左靠,右补空格 ④ %m. ns,输出占m列,只取字符串中左端n个字符,字符串向右靠,左补空格 ⑤ %-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m自动取n值例4.5字符串的输出 #include void main() { printf(“%3s\n%7.2s\n%.4s\n%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”, “CHINA”); },%f格式符,,用来以小数形式输出实数(包括单双精度) 有以下几种用法: ① %f不指定字段宽度,由系统自动指定字段宽度,使整数 部分全部输出,并输出6位小数应当注意,在输出的数字中 并非全部数字都是有效数字单精度实数的有效位数一般为7位。
②%m.nf指定输出的数据共占m列,其中有n位小数如果 数值长度小于m,则左端补空格 ③-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格输出实数时的有效位数 #include void main() { float x,y; x=111111.111; y=222222.222; printf(″%f″,x+y); },,例4.8 输出实数时指定小数位数 #include void main() { float f=123.456; printf(“%f\n%10f\n%10.2f\n%.2f\n%-10.2f\n”,f,f,f,f,f); },%e格式符,指定以指数形式输出实数 VC++给出小数位数为6位 指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+002,%m.ne printf(”%13.2e”,123.456); 输出: 1.23e+002 (前面有4个空格),,例: m.n,格式化输出,例:int a=1234; float f=123.456; char ch=‘a’; printf(“%8d\n%2d\n”,a,a); printf(“%f\n%8f\n%8.1f\n%.2f\n%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);,例: -,格式化输出,int a=1234; float f=123.456; static char c[]=“Hello,world!”; printf(“%8d\n%-8d\n”,a,a); printf(“%10.2f\n%-10.1f\n”,f,f); printf(“%10.5s\n%-10.3s\n”,c,c);,格式化输出,printf(”%f”,1.0/3);,printf(“%20.15f“,1/3);,printf(“%.0f”,10000/3.0);,printf(“%e“,123.456);,,,格式化输入,格式输入函数: 格式:scanf(“格式控制字符串”, 功能:按指定格式从键盘读入数据,存入地址 表指定的存储单元中,并按回车键结束,例: scanf(“%d ,%f”, ,普通字符,格式说明,地址表,格式化输入,函数scanf()的格式转换说明,格式化输入,函数scanf()的附加格式转换说明,注意:(1)函数scanf()没有精度修饰符.n,即用scanf()输入实型数据时不能规定精度。
(2)数据输入遇到空格、回车符、制表符(Tab)、遇到非法字符输入,或到达输入域宽度时认为输入数据结束格式化输入,% * m l/h d(x…),格式说明起始符号,附加说明符,域宽说明符,长度修正,输入数据类型,格式化输入,使用scanf函数应注意: (1)输入数据时不能规定精度 (2)如果在“格式控制字符串”中储量格式说明以外还有其它字符,则在输入数据时应该输入与这些字符相同的字符 (3)在用%c格式输入字符时,空格字符和转义字符都作为有效字符输入 例:scanf(“%c%c%c”, 输入:a b c 则c1=a, c2=“”, c3=b,格式化输入,使用scanf函数时常见错误 (1)scanf(“%f%f%f”,a,b,c); 错 scanf(“%f%f%f”, 错,,格式化输入,例: #include main() 。
