Skip to content

第三课:输入与输出函数(printfscanf

本章目标

  • 掌握 printfscanf 函数的使用
  • 理解如何通过标准输入和输出与用户交互
  • 学会处理用户输入的常见问题

输出函数:printf

printf 用于将格式化的数据输出到终端。

  • 语法:
c
printf("格式字符串", 参数1, 参数2, ...);
  • 格式字符串中的说明符会被后续的参数替代。
c
#include <stdio.h>

int main(void) {
    int age = 30;
    float weight = 72.5;

    printf("年龄是 %d 岁,体重是 %.1f 公斤。\n", age, weight);

    return 0;
}

输出:

sh
年龄是 30 岁,体重是 72.5 公斤。

输入函数:scanf

scanf 用于从用户输入中读取数据并存储到变量中。

  • 语法:
c
scanf("格式字符串", &变量1, &变量2, ...);

TIP

注意:变量名前必须加 & 符号,表示获取变量的内存地址。

代码示例:

c
#include <stdio.h>

int main(void) {
    int age;
    float weight;

    printf("请输入你的年龄:");
    scanf("%d", &age);

    printf("请输入你的体重(kg):");
    scanf("%f", &weight);

    printf("你输入的年龄是 %d 岁,体重是 %.1f 公斤。\n", age, weight);

    return 0;
}

输入与输出:

sh
请输入你的年龄:25
请输入你的体重(kg):68.5
你输入的年龄是 25 岁,体重是 68.5 公斤。

常见问题

  1. 输入时未加 & 会怎样?

    • 如果忘记加 &,编译器会报错,因为 scanf 需要变量的内存地址来存储用户输入的数据。
  2. 不匹配的格式说明符

    • 输入的数据类型必须与格式说明符匹配,否则会产生未定义行为。
    c
    scanf("%d", &age); // 正确
    scanf("%f", &age); // 错误,`age` 是整数类型

综合示例

编写一个程序,接受用户的姓名、年龄和成绩,并将结果输出到终端。

c
#include <stdio.h>

int main(void) {
    char name[50];
    int age;
    float grade;

    printf("请输入你的姓名:");
    scanf("%s", name); // 读取字符串
    printf("请输入你的年龄:");
    scanf("%d", &age); // 读取整数
    printf("请输入你的成绩:");
    scanf("%f", &grade); // 读取浮点数

    printf("\n你的信息如下:\n");
    printf("姓名:%s\n", name);
    printf("年龄:%d\n", age);
    printf("成绩:%.2f\n", grade);

    return 0;
}

输入与输出:

sh
请输入你的姓名:Alice
请输入你的年龄:20
请输入你的成绩:88.5

你的信息如下:
姓名:Alice
年龄:20
成绩:88.50

本课小结

  • printf 用于格式化输出,scanf 用于从用户输入中读取数据。
  • 使用 & 符号获取变量地址时要特别注意。
  • 学会根据格式说明符控制输入和输出的数据类型。