1、1,第14天 字符输入、输出与习题课,14.1 字符输入函数getchar( ) 格式:int getchar( void ) ; 功能: getchar( )是一个缓冲输入函数,读取stdin流中的下一个字符; 输入时,当用户按下Enter键之前, getchar( )函数不会收到任何字符; 当用户按下Enter键之后,之前输入的所有字符(包含换行符)都被操作系统发送给stdin,getchar( )函数每次读取一个字符; 必须包含头文件stdio.h。,键盘的输入送入标准输入流stdin,2,14.2 字符输出函数putchar( ) 格式:int putchar( int c ) ; 功
2、能: 该函数将存储在变量c中的字符写入到stdout流中; 参数类型可以是char,整型变量c的值必须在0255之间; 必须包含头文件stdio.h。,标准输出流stdout送到屏幕输出,3,清单14.2 getchar.c,#include int main( void ) int ch;while (ch = getchar( ) != n)putchar(ch);return 0; ,4,14.3 处理多余的字符fflush( ) 格式:int fflush( FILE *stream ) ; 功能: 冲洗流stream; (流实际上是一个指向文件的指针) 必须包含头文件stdio.h。
3、 例如:fflush(stdin) ; /*冲洗标准输入流stdin,用于清除键盘以前的输入*/,5,例1:13.9.2.8 编写一个计算器程序:加、减、乘、除、乘方,#include main ( ) int i,x,y,z;char c1;puts(“输入两个数:“);scanf(“%d %d“,6,case -:z=x-y;break; case *:z=x*y;break; case /:z=x/y;break; case :z=1;for(i=0;iy;i+)z*=x;break;,default :printf(“输入运算符错误!“);printf(“运算结果:%d %c %d =
4、 %d n“, x , c1 , y , z ) ; ,7,例2:输入一行文字,找出其中的大写字母、小写字母、空格、数字以及其它字符各有多少。,#include main ( ) int upper=0, lower=0, digit=0, space=0, other=0,i=0;char *p, s20;printf(“输入字符串:“);while(si=getchar( )!=n) i+;p = s ;while (*p != n ) if (*p=A) ,8,else if (*p=a) ,9,例3:17.2.2.4密码:把字母译成它后面的第4个字母,如果到头了,再回头,即:w-a,
5、x-b, y-c, z-d;大写一样,用指针实现。,#include #include main ( ) char *string , *p1;string=(char *)malloc(20*sizeof(char);p1=string ;puts(“请输入字母组成的明文:“);scanf(“%s“, string);,10,while (*p1!=0)if (*p1=w ,11,例4:对于上一题,如果规则一样,如何破译密码,即知道密文如何找出明文。,#include #include main ( ) char *string , *p1;string=(char *)malloc(20*
6、sizeof(char);p1=string ;puts(“如果字母组成的密文是:“);scanf(“%s“, string);,12,while (*p1!=0)*p1-=4 ;if (*p1a-5 ,13,例5:12.9.2.9 教材P193,#include void print_letter2(void); int ctr; char letter1 = X; char letter2 = =; main( void ) for( ctr = 0; ctr 10; ctr+ ) printf( “%c“, letter1 );print_letter2( ); void print_l
7、etter2(void) for( ctr = 0; ctr 2; ctr+ )printf( “%c“, letter2 ); ,14,例5:12.9.2.10 教材P193,#include void print_letter2(void); main( void ) int ctr; char letter1 = X; for( ctr = 0; ctr 10; ctr+ ) printf( “%c“, letter1 );print_letter2( ); void print_letter2(void) int ctr; char letter2 = =; for( ctr = 0;
8、 ctr 2; ctr+ )printf( “%c“, letter2 ); ,15,例5:12.9.2.5 教材P192,#include int var = 2000; void print_func(void); int main( void ) printf( “输出全局变量:“);printf( “nvar=%dnn“, var );print_func( );printf( “n输出全局变量:“);printf( “nvar=%dnn“, var ); ,void print_func( void ) int var = 1000;printf( “输出局部变量: “);printf( “nvar=%dn“, var ); ,