格式输入与输出及实例


    Scanf函数是一个标准库函数,其函数原型在头文件“stdio.h”中,与printf函数相同,c语言也允许在使用scanf函数之前不必包含stdio.h文件。
    scanf(“格式控制字符串”,地址列表);

一、格式字符串
  一般形式:%[*][输入数据宽度][长度]类型
  其中:  [ ]中 的项为任意项。


  1)、类型:
  格式            字符意义
   d           输入十进制整数
   o           输入八进制整数
   x            输入十六进制整数
   u           输入无符号十进制整数
   f或e      输入实型书(小数形式或指数形式)   printf( )  %f输出 保留6位小数
   c           输入单个字符
   s           输入字符串


  2)、“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
  如:scanf(“%d%*d%d”,&a,&b);
       当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b

  3)、宽度: 用十进制整数制定输入的宽度(即字符数)
  如:scanf(“%5d”,&a);
        输入:12345678 a的最终结果为 12345
  scanf(“%4d %4d”,&a,&b);
        输入:12345678 将把1234赋予a,把5678赋予b
  
  4)、长度:长度格式符为l和h,l表示输入长整形数据(如%ld)和双精度浮点数(如 %lf)。H表示输入短整型数据。(%hd   %hf)

二、使用scanf() 必须注意下面几点:
       1)、 scanf 函数中没有精度控制,如:scanf(“%5.2f”,&a); 是非法的。不能用此语句输入小数为2位的实数。
       2)、在从键盘输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如 对”%d“输入”12A“时,A即为非法数据)时即认为该数据结束。

       3)、在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。【总之,程序在读入字符型数据(整型等类型无所谓)时,空格也被认为是字符数据】

例如:
       scanf(“%c%c%c”,&a,&b,&c);
       输入为:d e f  时

               则把d 赋予 a ;把空格赋予b;把e 赋予 c
       只有当输入为:def时,

              才能把d赋予a,把 e赋予b,f赋予c


       如果在格式控制中加上空格作为间隔,
      如scanf(“%c %c %c”,&a,&b,&c);
              则输入各数据之间可加空格


Demo1: 将小写字母转换为大写字母

<span style="font-size:18px;">  /*小写字母转换为大写字母*/
  #include <stdio.h>
  void main()
  {
       char a,b,c;
       printf("请输入三个小写字母。。。\n");
       scanf("%c %c %c", &a, &b, &c);
       printf("%c %c %c\n%c %c %c\n", a,b,c,a-32,b-32,c-32);
       printf("%d,%d", a, a-32);
  }</span>





Demo2: 输出各种数据类型的字节长度

<span style="font-size:18px;">  #include <stdio.h>
  /*输出各种数据类型的字节长度*/
  void main()
  {
      int a;
      long b;
      float c;
      double d;
      char e;
      printf("int: %d\nlong: %d\nfloat: %d\ndouble: %d\nchar: %d\n",sizeof(a),
           sizeof(b),sizeof(c),sizeof(d),sizeof(e));
  }</span>





Demo3: 输入三角形的三边长,求三角形面积

<span style="font-size:18px;">  #include <stdio.h>
  #include <math.h>
  void main()
  {
       double a,b,c,area,s;
       printf("请输入三角形三边长:\n");
       scanf("%lf,%lf,%lf",&a,&b,&c);
       s=1.0/2*(a+b+c);//此处不能1/2,会取整变成零  s=(a+b+c)/2也行,因为分子是double型,会强转为double型
       area=sqrt(s*(s-a)*(s-b)*(s-c));
       printf("a=%2.2g,b=%2.2g,c=%2.2g,s=%2.2g\n", a, b, c, s);
       printf("area= %2.2f\n", area);
  }</span>





Demo4: 求ax^2+bx=c=0方程的根,a,b,c由键盘输入,设b^2-4ac>0

<span style="font-size:18px;">#include <stdio.h>
#include <math.h>
void main()
{
     double a,b,c,p,q;
     printf("input...\n");
     scanf("%lf,%lf,%lf",&a,&b,&c);
     p=-b/(2*a);
     q=sqrt(b*b-4*a*c)/(2*a);
     printf("x1=%5.2f,x2=%5.2f\n", p+q, p-q);
}</span>



当用double类型时,一定要用%lf 格式。




14-08-27新增

定义一个整型变量ic,输入ic的值,将变量以字符形式输出。 注意输入使用scanf输入, 
比如:
输入 97 输出为a
输入 98 输出为b









关于此题目,自己竟然想得极其复杂!采用数组装载26个字母,如输出小写字母:printf("%c",ch[cin-97]);

其实,无论字符转数字,还是数字转字符,都可以采用直接输出的方式!控制输出格式就行

<span style="font-size:18px;">#include <stdio.h>

int main(void)
{
	int cin;
	scanf("%d",&cin);
    printf("%c\n",cin);
	return 0;
}</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值