测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
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:运算符优先级与结合性。