Skip to content

输出和输入

输出

输出:将程序的运行结果输出到控制台或终端窗口中

printf 语法格式

c
int printf(const char *format, ...);
  • format 参数是一个格式化字符串,包含了输出的格式控制信息
  • 后面的参数 ... 是可变参数,参数 (要输出的数据) 长度不固定

格式化占位符

  • 格式化占位符
打印格式对应数据类型含义
%cchar字符型,输入的数字按照 ASCII 码相应转换为对应的字符
%hdshort int短整数
%huunsigned short无符号短整数
%dint接受整数值并将它表示为有符号的十进制整数
%uunsigned int无符号 10 进制整数
%ldlong接受长整数值并将它表示为有符号的十进制整数
%ffloat单精度浮点数
%lfdouble双精度浮点数
%e,%Edouble科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写
%schar *字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
%pvoid *以 16 进制形式输出指针
%ounsigned int无符号 8 进制整数
%x,%Xunsigned int无符号 16 进制整数,x 对应的是 abcdef,X 对应的是 ABCDEF

示例代码:

c
#include <stdio.h>

int main() {
    // 定义变量
    char c = 'A';
    short s = 10;
    int i = 10;
    long l = 10;
    float f = 1.123456789123456789;
    double d = 1.123456789123456789;
    unsigned int ui = 20;
    char *name = "bill";

    // 格式化输出
    // 整型
    printf("c=%d\n", c);
    printf("s=%hd\n", s);
    printf("i=%d\n", i);
    printf("l=%ld\n", l);
    // 浮点类型
    printf("f=%.10f\n", f);
    printf("d=%.20lf\n", d);
    // 无符号数据
    printf("u=%u\n", ui);
    // 八进制和十六进制 可以加上前缀 # 自动输出八进制和十六进制 0 或 0x
    printf("o=%#o\n", 120);
    printf("x=%#x\n", 120);
    // 字符串类型
    printf("s=%s\n", name);
    // 内存地址
    printf("ps=%p\n", &s);

    return 0;
}

输入

输入:接收用户输入的数据的过程

scanf 语法格式

c
scanf("格式化字符串", &变量 1, &变量 2,...);
  • 格式化字符串用于指定输入的数据类型及其格式
  • 变量 1、变量 2 等是要读入的变量的地址

示例代码:

c
#include <stdio.h>

int main() {
    // 定义 int 类型变量 age,通过 scanf 输入内容,然后打印内容
    int age;
    printf("请输入年龄:");
    scanf("%d", &age);
    printf("age = %d\n", age);

    return 0;
}

案例

  • 从键盘输入一个圆形的半径,输出圆的周长和面积
  • 思路步骤
1. 定义常量 pi
2. 定义半径变量 r
3. 输入半径
4. 求周长和面积, * 为乘以运算符
5. 输出周长和面积

示例代码:

c
#include <stdio.h>

int main() {
    // 1. 定义常量 pi
    const double pi = 3.1415;
    // 2. 定义半径变量 r
    double r;
    // 3. 输入半径
    printf("请输入半径:");
    scanf("%lf", &r);
    // 4. 求周长和面积,* 为乘以运算符
    double len = 2 * pi * r;
    double area = pi * r * r;
    // 5. 输出周长和面积
    printf("周长 len = %lf, 面积 area = %lf\n", len, area);

    return 0;
}