A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liruixue 中级黑马   /  2015-11-9 14:42  /  1252 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Printf和scanf函数
Printf函数
Float f1=3.14f;
ptintf(“f1=%f”,f1);//输出的是6位小数
ptintf(“f1=%.2f”,f1);//输出的是2位小数
还有%m.n格式:
m 表示所占的列数若m大于数的位数前面用空格
n 表示小数点后的位数
若为%-m.n格式
m 表示所占的列数若m大于数的位数后面用空格
n 表示小数点后的位数
%O把一个数按八进制输出
%x把一个数按八16进制输出
Float类型默认精确小数点后6位,有效位数7位
Double类型默认精确小数点后6位,有效数位15位
Printf使用的注意事项:
1)%md问题(设置域宽问题)
    Printf(“%d”,10);  );
  
   m --数字,这个数字可以为正,也可以为负
   如果要输出的位数>域宽m  按照实际位数输出
   Printf(“%3d”,1888);//1888
   如果要输出的位数 <域宽m  要补空格
                            m>0 从左侧开始补空格
                            m<0 从右侧开始补空格
2)%0md使用注意
       %0md表示不足补0
   int i=1;
   Printf(“%02d”,i);//01
   For( i=0;i<20;i++)
      Printf(“%02d”,i);//输出结果为00、01、02..........19
3)\t \n \r \\ %%转义字符的问题
\t 制表符
\\ 输出\
%%输出%
Scanf 函数
  如果使用这个函数,要包含一个头文件 stdio.h
  阻塞式的函数:函数执行后,会等待用户的输入,如果用户不输入任何内容,它会一直等待。
Scanf函数的作用:
  从键盘接收用户输入的内容,保存到指定的变量中
Scanf函数的格式:
  Scanf(“格式控制符”,输入项的地址列表);

Float score=0.0f;
Scanf(“%f”,&score);//此处比可以写%m.nf,可以写%mf是可以的此时小数点也算一位
Scanf的注意事项:
  0)scanf函数当遇到回车的时候,会结束执行
  1)接受单个变量的时候,在输入值之前,如果我们输入空格、回车、tab键都会被忽略
  2)int age=-1,num=-1;
scanf(“%d%d”,&age,&num);如果从键盘输入12,34
结果age=12,num=-1;
  3)scanf混合输入:
     int a=-1,b=-1; char c;
     Scanf(“%d%c%d”,&a,&c,&b); 若输入12  a  34 的得到的结果是a=12c= “ ”b=-1若想混合输入必须用逗号间隔,scanf(“%d,%c,%d”,&a,&c,&b);
4)域宽:
    Scanf(“%5d”,&a); 若输入的为12345678则输出的结果是12345
5)关于*号问题
   Scanf(“%d%*d%d”,&a,&b);//%*d的作用是跳过它输入则输入12,34,56 输出的a=12,b=56;
应用输入年份:例如printf(“请输入日期”);scanf(“%d-%d-%d”,&a,&b,&c);输入2015-09-08才能接收若输入2013/12/30就会出现错误所以用scanf(“%d%*c%d%*c%d”);可以掠过2个分隔符
6)scanf中尽量不要用\n,如果一不小心用了,怎么破(scanf(“%d\n”,&a);)
  输入值后,随便输入一个内容
  或者\n要原样输出若输入了别的也是用这种方法
scanf运行的原理:

   1)当用户输入内容后,用户输入的缓冲区中然后,scanf函数会根据格式控制的字符要求,从输入的缓冲区内依次取它想要的内容
    如果 从缓冲区中取得内容和我们的格式要求一致,则把值存放到变量中  %d %c%d  如果格式不一致,则不修改变量的值
  2)如果scanf缓冲区中还有内容,则scanf不会提示我们再次输入
    a=-1;b=-1;
Scanf(“%d”,&a);
Scanf(“%c”,&ch);
Scanf(“%d”,&b);
Printf(“%d%c%d”,a,ch,b);
若输入12
W
34
则输出的结果是12, ,-1;应12w34,则输出的结果为12,w,34
破解方法:用逗号间隔开
Scanf(%d,%c,%d);

Scanf(“%d”,&a);
Scanf(“%c”,&ch);吸收空格
Scanf(“%c”,&ch);
Scanf(“%d”,&b);
b就会忽略\n找到与之匹配的

4 个回复

倒序浏览
竟然看完了
回复 使用道具 举报

有不正确的多多指教
回复 使用道具 举报
很详细,学习了
回复 使用道具 举报
不错,写的很细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马