2026年9月24日
14:09
1.printf
占位符的作用是用“”后面的数据或词句替换语句中的占位符(指定格式)
例如:printf(“There are %d apples”,2);
生成There are 2 apples
例2printf(“%s will come tonight\n”,“张三”);
例3printf(“%s says it is %d o’clock”,“zhangsan”,10);
例4printf(“a 的地址为 %p”,&a); %p专门用来打印地址的即指针
注意顺序不能乱占位符的举例
2.printf的输出格式限定宽度
printf()限定占位符的最小宽度
例如 printf(“%d\n”,123);
printf(“%5d\n”, 123);
想要左对齐则在%后加-
对于小数 这个限定符会限制所有数字的最小显示宽度(位数包括小数点)
例如 printf(“%f”,123.45);//%f默认输出6位小数
3.printf打印总是显示正负号
例如printf(“%+d\n”,12);
printf(“%-d”, 12);
4.限定小数位数
希望小数点后只保留n位 则占位符可以写成%.nf
例如printf(“%.9f”,1.2);
printf(“%.2f”,1.256);//四舍五入
5.限定宽度与限定小数位数结合
例如printf(“%6.2f”,1.256);
最小宽度和小数位数这两个限定值,都可以用*(相当于占位符)代替,通过printf()的参数传入
例如printf(“%*.*f”,6,2, 1.256);
6.输出部分字符串
%s只想输出开头的部分,可以用%.ns指定输出的长度
例如printf(“%.3s”,“abcdefgh”);输出abc
2.1.scanf 的基本用法
Int i=0;
scanf(“%d”,&i);
第一个参数放置占位符,控制解读的参数类型。
改格式字符串中有多少个占位符就要有多少个变量
变量如果本身不是地址的话要加上取地址符&
2.2scanf可以输入多个数据
例如:
int i = 0;
int j = 0;
float x = 0.0;
float y = 0.0;
printf(“请输入你的数据:”);
scanf(“%d%d%f%f”,&i,&j,&x,&y);
printf(“i=%d\n”,i);
printf(“j=%d\n”,j);
printf(“x=%f\n”,x);
printf(“y=%f\n”,y);
scanf()处理数值占位符时会自动过滤空白字符,包括空格、制表符、换行符
2.scanf处理数据的原理(多个scanf()的情况)
用户的输入先放缓存,按下回车键后才开始解读,会从上一次解读遗留的第一个字符开始,知道读完缓存,或者遇到第一个不符合条件的字符为止。
例如:
scanf(“%d”,&x);
printf(“%d\n”,x);
scanf(“%f”,&y);
printf(“%f\n”,y);
输入-14.45e12#0
输出
-14
449999994880.000000
例如:scanf(“%d%f”,&x,&y);也可以
3.scanf的返回值
scanf的返回值是一个整数,表示成功读取的变量个数
如果没有读取任何项或匹配失败,则返回0.
如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回EOF(-1)
例如:
{
int a = 0;
int b = 0;
float f = 0.0;
int r=scanf(“%d %d %f”,&a,&b,&f);//表示成功读取到数据的个数
printf(“a=%d,b=%d,f=%f,r=%d\n”,a,b,f,r);
return 0;}
ctrl加z
在算法竞赛中可以计算多组数据的做法
2.3scanf的占位符
注:%c不会跳过起首的空白字符
如果想要跳过空白字符例如
若非要打印带空格的字符串
例如
修改
变成%[m]s的形式会更加安全些
2.4赋值忽略符