Printf 和 scanf 的用法 ( 简单入门)

来源:互联网 发布:源氏木语 知乎 编辑:程序博客网 时间:2024/04/28 03:09

其实为啥要说这两个东西呢?

因为有时候,题目会告诉你,输入数据很大,请用scanf输入,如果用cin,有可能没读完就超时了。

 

而且scanf和printf在控制输入输出格式方面,比cin和cout要好看一些,例如北大oj的题目很多时候会让你输出 形同 “ Case i : @!$#% = 答案 ” 这样的答案。。。

 

下面开始说 scanf 和 printf 怎么用了:

 

首先 , 他们在头文件 <stdio.h> 里面

先说printf:

格式:printf(“格式控制串”,输出表)

功能:按指定格式向显示器输出数据

返值:正常,返回输出字节数;出错,返回EOF(-1)

 

输出表:要输出的数据(可以没有,多个时以“,”分隔)

格式控制串:包含两种信息

(1)格式说明: %[修饰符]格式字符  ,用于指定   输出格式

(2)普通字符或转义序列:原样输出

格式字符表 +  附加格式说明符表(修饰符):

下面看看几个例子:

int a = 10;pritnf("Hello world") //输出"Hello world"pritnf("%d Hello world",a) //输出"10 Hello world"
int a=1234;      double d=123.456;      printf(“%08d\n”,a);       //00001234      printf(“%010.2lf\n”,d);  //0000123.46
int a=123;      printf(“%o,%#o,%X,%#X\n”,a,a,a,a);     //173,0173,7B,0X7B


 

再说scanf:

格式: scanf(“格式控制串",地址表)

功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束

返值:正常,返回输入数据个数

 

地址表:变量的地址,常用取地址运算符 &(这里很重要,要是一个地址,不只是一个变量名字)

格式字符:d,i,o,x,u,c,s,f,e

int a;scanf("%d",a); // ×scanf("%d",&a);// √ 


 修饰符功能:

 修饰符例子:

scanf(“%4d%2d%2d”,&yy,&mm,&dd);//输入  19991015   //则1999->yy, 10->mm, 15->dd

 

下面再看看几个例子:

scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);     //输入  123  123  123回车     //输出  a=123,b=83,c=291
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);//输入 a=12,b=24,c=36回车//12 -> a , 24 -> b,36->c

 

注意:用“%c”格式符时,空格和转义字符作为有效字符输入

scanf(“%c%c%c”,&c1,&c2,&c3);      //若输入abc回车          //则a->c1,  ->c2, b ->c3


 输入数据时,遇以下情况认为该数据结束:
 遇空格、TAB、或回车
 遇宽度结束
 遇非法输入

scanf(“%d%c%f”,&a,&b,&c);     //若输入1234a123o.26回车       //则  1234->a, ‘a’->b, 123->c

上面例子输入函数就留下了o.26这些垃圾了

可以用格式串中空格或“%*c”来“吃掉”:

int x;char ch;scanf(“%d”,&x);//读完整形以后后面还有一个回车符号scanf(“  %c”,&ch);//或scanf(“%*c%c”,&ch);



嗯,printf 和 scanf 大致先介绍到这里。

下面可以参考一下hdoj 1089 - 1096 试验一下。

题解稍后出炉,请耐心等待。




 

 

原创粉丝点击