目录
一、printf(需要包含头文件stdio.h)
1、基本用法
#include<stdio.h>
int main()
{
printf("hello world")
return 0;
}
直接打印出hello world,如果需要换行,要加\n。例如
#include<stdio.h>
int main()
{
printf("hello world\n")
printf("apple");
return 0;
}
2、占位符用法及基本占位符类型
printf("you have %d pen and %d apple",3,5);
其中 %d作为该语句的占位符可以在后面用符合该占位符的值替换 ,如果不符合,则会报错 ,而占位符也可以一句连用多个。常用占位符如下
%a :十六进制浮点数,字母输出为小写。
%A :十六进制浮点数,字母输出为大写。
%c :字符。
%d :十进制整数。
%e :使用科学计数法的浮点数,指数部分的 e 为小写。
%E :使用科学计数法的浮点数,指数部分的 E 为大写。
%i :整数,基本等同于 %d 。
%f :小数(包含 float 类型和 double 类型)。
%g :6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e为小写。
%G :等同于 %g ,唯一的区别是指数部分的 E 为大写。
%hd :十进制 short int 类型。
%ho :八进制 short int 类型。
%hx :十六进制 short int 类型。
%hu :unsigned short int 类型。
%ld :十进制 long int 类型。
%lo :八进制 long int 类型。
%lx :十六进制 long int 类型。
%lu :unsigned long int 类型。
%lld :十进制 long long int 类型。
%llo :八进制 long long int 类型。
%llx :十六进制 long long int 类型。
%llu :unsigned long long int 类型。
%Le :科学计数法表示的 long double 类型浮点数。
%Lf :long double 类型浮点数。
%n :已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%o :八进制整数。
%p :指针。
%s :字符串。
%u :无符号整数(unsigned int)。
%x :十六进制整数。
%zd : size_t 类型。(其中size_t输入无符号整形)
%% :输出一个百分号。
3、输出格式
printf("%9.4f", 12.224);
输出结果为

printf("%-9.4f", 12.224);

那为何会这样呢?,原因是%9.4f中,9是最小宽度,4是最小小数占位,不足补0;而最小宽度中+9是像右对齐最小占9个格,而-9则是向左对齐,最小占9个格;
二、scanf(需要包含头文件stdio.h)
1、基本用法
#include<stdio.h>
int main()
{
scanf("%d",&a);
}
和printf有点类似,都是需要占位符和参数,其中参数中要携带地址,而&符号就是取地址的意思 ,同时也可以一次读多个变量,例如
scanf("%d%d%f%f",&a,&b,&c,&d);
这个表示a和b需要输入十进制整数,而c和d需要输入浮点数。输入完之后可以利用printf打印出来,而输入的值则类似于赋值
2、占位符中断用法及基本占位符类型
scanf("%d%d%f%f",&a,&b,&c,&d);
如果不想要赋值给后面,那么可以在输入过程中进行强制中断,而强制中断的方法是按ctrl+z;但在vs环境中需要连续按三次ctrl+z;基本占位符类型如下:
%c :字符。
%d :整数。
%f : float 类型浮点数。
%lf : double 类型浮点数。
%Lf : long double 类型浮点数。
%s :字符串。
%[] :在方括号中指定一组匹配的字符(比如 %[0-9] ),遇到不在集合之中的字符,匹配将会
停止
而值得注意的是,除了%c,其他都会自动忽略棋手的空白字符;而占位符%s,规则是,从当前第一个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。和一般的字符串不太一样。
3、赋值忽略符
有的时候,用户输入可能不符合预定格式。例如:
scanf("%d-%d-%d",&year,&month,&day);
我们需要输入year-month-day,如果输入格式错误,例如3/2/3;则scanf()解析数据就会失败。

为了避免这种情况,需要把赋值忽略符*放在任何占位符的百分号后面,该占位符就不会返回值,解析后会被丢弃,例如:
scanf("%d*%c%d*%c%d",&year,&month,&day);
而中间输入任何字符都不会影响后面结果;


最后,说一下,scanf和printf这俩个差不多是我们最常用的,我们把这块弄会了可以省掉许多麻烦
2653

被折叠的 条评论
为什么被折叠?



