B78
附录B:printf 与 scanf
引入
章前总览 C++ 兼容 C:也可用 printf 输出、scanf 输入。二者都在 <stdio.h> 里声明。一级仍以 cin/cout 为主,本附录作补充。
两块内容:
- printf:格式控制怎么写
- scanf:必须传地址 &
1 printf:向屏幕输出
格式:printf("格式控制", 输出列表);
三种格式控制
- 只有普通字符串(无 %):原样打印,如
printf("Hello,World!\n"); - 带格式符:常用
%d(整)、%f(浮点)、%c(字符)、%s(字符串)、%ld(long)。个数与输出项一一对应。 - 字符串与格式符混用:普通字原样显示,% 处填表达式的值。
混用示例
printf("2+3=%d, 2*3=%d\n", 2 + 3, 2 * 3);
// 输出:2+3=5, 2*3=6
宽度与对齐(常用修饰)
#include <stdio.h>
int main() {
double d = 3.1415926;
printf("%6.2f\n", d); // 总宽6、小数2,右对齐
printf("%-6.2f\n", d); // 左对齐
long i = 1234567890;
printf("%d\n", i);
printf("%20d\n", i); // 宽20,前面补空格
printf("%2d\n", i); // 宽不够时仍按实际宽度输出
return 0;
}
-:左对齐;可省略的还有宽度 m、小数位 .n、长整型 l 等。- 需要
#include <stdio.h>。
2 scanf:从键盘读入
格式:scanf("格式控制", 地址列表); —— 列表里必须是地址。
正确与错误
scanf("%d%d%d", &a, &b, &c); // √ 取地址
scanf("%d%d%d", a, b, c); // × 不能是普通变量名
&是取地址运算符。- 常用格式:
%d%f%c%s;读double必须用%lf。
输入分隔
- 多个数之间用空格、Tab 或换行分隔均可。
- 格式串里若写了逗号等字符,输入时必须原样敲出来。
- 例:
scanf("i=%d", &i);正确输入是i=30,只敲 30 读不进。 - 例:
scanf("%d, %d, %d", &a,&b,&c);要输入35, 67, 14。
不要给 scanf 规定小数精度
scanf("%7.2f", &a); // ×
scanf("%f", &a); // √
小结
和 cin/cout 对照记:
printf:"格式" + 值列表
scanf :"格式" + &变量(double 用 %lf)
初学优先 cin/cout,少踩 & 与格式坑
✓
里程碑达成:
下一节附录C:运算符优先级与结合性。