C输入输出

 C 语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。
   1、  printf(  )函数
常用的字符格式
d 格式符:用来输出十进制整数
⑴  %d:按整型数据的实际长度输出   
     例:printf(“%d\n”,12345);
         输出结果:12345  
⑵  %md:m为指定的输出字段宽度
    ① 数据位数 < m,则左端补空格
    ② 数据位数 > m,则按实际位数输出
       例:printf(“%4d,%4d\n”,123,12345);
       输出结果:  123,12345
⑶  %m.nd:m为规定输出的字段总宽度;n为规定输出的最小有效位数,
      对于m有两种情况:
      输出数据实际位数 < m ,则左端补空格
      输出数据实际位数 > m ,则按实际位数输出
      对于n有两种情况:
      输出数据的实际有效位数 > n,则n不起作用
      输出数据的实际有效位数 < n,则左端补0直至n位
      例:printf(“%5.3d,%4.3d\n”,1234,12);
          输出结果: 1234,    012
 ⑷  %ld 和%hd:输出long int(长整型数据) 和 short int (短整型数据)
        例:long  int  a = 135790;
            printf(“%ld”,a);
    如果用“%d”输出,就会发生错误,对long型数据应用“%ld”格式输出对长整型数据也可
    以指定字段宽度。       
    例:printf(“%d,%8ld,%ld\n”,7000,70000l,70000l);
    输出结果:7000,            70000,70000
    其中“8”代表输出宽度为8位  
o 格式符和x 格式符
⑴ o 格式符:以8进制数形式输出整数
⑵ x 格式符:以16进制数形式输出整数
⑶ d、o、x 格式符之间的区别
   例:printf(“\n%d,%o,%x”,-1,-1,-1);
       输出结果:-1,177777,ffff        
   说明:-1在内存单元中以补码的形式存放,占16位(包括符号位)
   16  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1
    1   0   0   0   0   0   0   0  0  0  0  0  0  0  0  1
    1   1   1   1   1   1   1   1  1  1  1  1  1  1  1  1
   符号位
   对于“%d”直接输出-1
   对于“%o”和“%x”则将内存中的-1的补码连同符号位一起转换为8进制数和16进制数,
   视为无符号数
   由二进制 →八进制:-1 → 177777
   由二进制 →十六进制:-1 → ffff
 ⑷ %lo和%lx:分别输出八进制长整数和十六进制长整数
    例:printf(“%8o,%8x”,-1,-1);
        输出结果:      177777,                f f f f 
    注:o 格式符和x 格式符不能输出负数,而是
        根据整数的存储形式(即补码形式),将其视为无符号数输出。
 u 格式符:输出unsigned型数据(无符号数以十进制形式输出)
 例:printf(“%u”,65535);
     输出结果:65535
 ⑴ 一个有符号整数(int型)可以用%u格式输出;反之,一个unsigned型数据也可
    以用%d 格式输出
    printf(“%d,%u”,-1,-1);                      
    结果:-1,65535
    说明:将-1转换成补码形式输出
    printf(“%d,%u”,65534u,65534u);    
    结果:-2,65534
    说明:将一个无符号数以“%d”的形式输出时,最高位视为符号位其余部分按补码处理。
  ⑵ 可用“%lu”输出无符号长整数
     例: printf(“%lu”,700000ul);                       
          结果:700000
  ⑶ unsigned型数据也可用%o 或%x 输出
     例:unsigned  int  a = 65535;        
           printf(“%d,%o,%x,%u”,a,a,a,a);
           结果:-1,177777,ffff,65535
f 格式符:用来输出实数(包括单、双精度) 以小数形式输出
⑴ %f:不指定字段宽度,由系统自动指定,使整数部分全部如数输出,小数部分
       输出6位。
   例:printf(“%f”,120.329458759);
       结果:120.329459  /* 第七位四舍五入*/
⑵ %m.nf:m 规定输出的字段总宽度,n 规定输出的小数位数有两种情况:
     实际数据的整数位数 < m-n-1,左端填充空格  
             实际数据的整数位数 > m-n-1,m不起作用按实际数据应有的位数输出
     例:float  f = 123.456;                   
       printf(“%f\n%10f\n%.2f\n%10.2f”,f,f,f,f);
                 结果:   123.456001
                          123.456001
                          123.46
                              123. 46
如果不规定m和n,则m取被输出量的实际位数,n取6。
%﹣m.nf 和%m.nf基本相同,只是输出的数值向左端靠,右端填充空格
例:float  f = 123.456;
       printf(“%f\n%-10.2f\n%10.2f\n”,f,f,f);
        结果:   123.456001
                 123. 46
                      123.46
注意:f 的值应为123.456,但输出123.456001,这是由于实数在内存中的存储误差引起的。
e 格式符:以指数形式输出实数。
⑴ %e:不指定输出数据所占的宽度和数字部分小数位数(包含小数点)。
   例:printf(“%e”,123.456);                   
            结果:1.23456e+02
   说明:用%e格式输出的实数小数点前必须有
          且只有一位非零数字 
 ⑵ %m.ne:m 规定输出的字段总宽度;n-1规定小数位数
      如果未指定n值,系统自动按n = 5处理
      如果实际输出的位数 > m,则按实际数输出
      如果实际输出的位数 < m,则左端补空格
      printf(“%10e,%10.4e,%.3e”,123.456,123.456,123.456);
      结果:1.23456e+02, 1.235e+02,1.23e+02
      如果实际输出数的小数位数 < n-1,则在小数部分补“0”,直至n-1位
      printf(“%10.4e”,1.23);
      结果:  1.230e+00
  s 格式符:用来输出一个字符串
  ⑴ %s:直接输出实际字符串
          例:printf(“%s”, “china”);
              结果:china
  ⑵ %ms:输出的字符串占m列,有两种情况:
       若字符串长度 > m,则m不起作用,按实际输出
       若字符串长度 < m,则左端补空格
  ⑶ %m.ns:m 规定输出的字段总宽度;n 规定只取字符串中左端n个字符
       若字符串长度 < n,则n 不起作用
       若字符串长度 > n,则输出左端n 个字符,多余的字符被截断
       printf(“%3s,%7.2s”, “abcde”, “abcde”);
       结果:abcde,                    ab
       printf(“%.4s”, “abcde”);    
       结果:abcd
       %.4s只指定了n的值,没有指定m的值,自动m=n=4,故占4列。
2、scanf(  )函数
scanf(  )函数可以用于所有类型数据的输入,采用不同的格式转换说明符将不同类型的数据从标准输入设备读入内存。
对scanf(  )函数的几点补充说明:
⑴输入数据之间的分隔符只能用空格、制表符或回车键。
⑵输入的数据类型必须与句中格式转换说明符一致。
在用%c 格式输入字符时,空格字符和转义字符都作为有效字符输入。
main( )
{char c1,c2,c3;
 scanf(“%c%c%c”,&c1,&c2,&c3);          
 printf(“c1=%c,c2=%c,c3=%c”,c1,c2,c3);
}
①输入:abc          输出:c1=a ,c2=b ,c3=c
②输入:a   b   c    输出:c1=a ,c2=   ,c3=b
⑶、标准c在scanf 中不使用%u说明符,对
      unsigned型数据,以%d或%o、%x格式
      输入。
⑷、输入数据时不能规定精度。
      例如:scanf(“%7.2f”,&a);   是不合法的。
字符输出输入函数
 putchar(  )、getchar(  )
 putchar(  )和getchar(  )函数用于单个字符的输出和输入,它们定义在标题文件
 <stdio.h>中,写程序时必须写#include <stdio.h>。
putchar(  )函数
功能:向标准输出设备输出一个字符。
一般格式为: putchar( c );
其中c是一个字符型常量或变量,也可以是一个取值不大于255的整型常量或变量。      
#include <stdio.h>
 main(  )
 { char a=‘B’,b=‘O’,c=‘Y’;                     
    putchar(a);putchar(b);putchar(c);
  }
 运行结果:BOY      
用putchar(  )函数还可以输出控制字符或不可显示的字符。
          putchar(‘\n’)            输出一个换行符 
          putchar(‘\101’)          输出字符‘A’ 
          putchar(‘\’’)             输出单引号字符‘
          putchar(‘\015’)          输出回车,不换行
          putchar(‘\x07’)          输出一声铃响       
#include <stdio.h>
main(  )
{ char a=‘O’,b=‘K’;
  putchar(a); putchar(‘\n’); 
  putchar(b); putchar(‘\n’); 
}
  运行结果: O
                      K
getchar(  )函数
功能:从标准输入设备接收一个字符。
一般格式为: getchar(  );
这是一个不带参数的函数,即圆括号中没有参数,但圆括号不能省略。      
#include <stdio.h>
  main(  )
 { char c;  c=getchar(  );  putchar(c); }
  从键盘输入字符‘a’:         a↙
  输出变量c的值为‘a’ :      a
getchar(  )还可以作为putchar(  )的参数,
如上题可改为:
 ①#include <stdio.h>
    main(  )
    {printf(“%c\n”,getchar( ));} 
 ② #include <stdio.h>
    main(  )
    {putchar(getchar( ));}
 使用getchar(  )函数时,回车符也作为输入字符的一部分。尤其在连续使用该函数时要
 特别注意回车符可能已作为换行符被接收并存入另一个变量中。§2.5.4 单字符输入函
 数。
(getche(  )和getch(  ))
getchar(  )函数:输入一个字符必须按回车键后才能被接收。
getche(  )和getch(  )函数:输入字符不必按回车键。
getche(  )和getch(  )函数的异同:
相同:getche(  )和getch(  )函数定义在标题文件<conio.h>中。写程序时必须写 
     #include <conio.h>。
不同:getche(  )函数把输入字符回显在屏幕上
      getch(  )函数则不回显。
#include <conio.h>
   main(  )
   { char ch;  
     ch=getche(  );  
     printf(“%d\n”,ch);
   }
程序运行时,用户只要按字母a,屏幕显示结果:
    a    (a是getche(  )函数回显的)
(printf(  )函数按整#include <conio.h>
   main(  )
   { char ch;  
     ch=getch(  );  
     printf(“%d\n”,ch);
   }
程序运行时,用户只要按字母a,屏幕显示结果:
   97 (printf(  )函数按整数格式显示c的值)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值