Skip to content

输入与输出

需要引入头文件#include <stdio.h>

单个字符输入与输出

putchar

输出单个字符

c
putchar(x); // 输出变量x的值
putchar('A);
putchar('\n'); // 换行
putchar('\101'); // 输出字符A

getchar

获取键盘输入的单个字符

c
char c = getchar();

格式输入与输出

printf

按格式打印出来

语法:printf("格式符1格式符2格式符3...格式符n", 表达式1, 表达式1, 表达式2, ..., 表达式n);

c
int i = 1;
printf("hello world:%d", i);

scanf

将键盘输入的值自动赋值给变量

语法:scanf("格式符1格式符2格式符3...格式符n", &变量名1, &变量名, &变量名, ..., &变量名n);

c
int i;
printf("请输入变量i的值:")
scanf("%d", &i);

// scanf("%d,%d", &a, &b); 只有输入1,2才会正确赋值

INFO

重点记忆以下4个格式符即可:

img.png

%md

指定输出数据的宽度为m

WARNING

如果是获取键盘输入值,则只取m宽度的值

c
    int x;
    scanf("%3d", &x);
    // 键盘输入:123456
   // output: 123

如果是获取键盘输出值,如果不足m则补足空格,反之则输出原值

c
    int x = 123456;
    printf("%3d", x);
   // output: 123456

%m.nf

指定输出数据的宽度为m,小数点后保留n位,最后一位四舍五入

c
float a= 6.78932;
printf("n: %3.2f",a);
// output: 6.79

宽度m指的是小数的个数+整数的个数

拓展

fmax与fmin

分别求两个数值的最大值和最小值,需要引入头文件#include <math.h>

c
int a = 1, b = 2;
fmax(a, b);
fmin(a, b);

测试题

实现输入两个整数,输出其中两个值中的最大值和最小值,并且给出提示

c
#include <stdio.h>

int main() {
    printf("请输入两个整数\n");
    int a, b;
    scanf("%d%d", &a, &b);
    printf("最大值为:%d", a >= b ? a : b);
    printf("最小值为:%d", a <= b ? a : b);
    return 0;
}
关键字字节范围格式化字符串硬件层面的类型备注
char1bytes通常为-128至127或0至255,与体系结构相关%c字节(Byte) 大多数情况下即signed char;

在极少数1byte != 8bit或不使用ASCII字符集的机器类型上范围可能会更大或更小。其它类型同理。

unsigned char1bytes通常为0至255%c、%hhu字节
signed char1bytes通常为-128至127%c、%hhd、%hhi字节
int2bytes(16位系统) 或
4bytes
-32768至32767或
-2147483648至2147483647
%i、%d字(Word)或双字(Double Word)signed int(但用于bit-field时,int可能被视为signed int,也可能被视为unsigned int)
unsigned int2bytes 或
4bytes
0至65535 或
0至4294967295
%u字或双字
signed int2bytes 或
4bytes
-32768至32767 或
-2147483648至2147483647
%i、%d字或双字
short int2bytes-32768至32767%hi、%hdsigned short
unsigned short2bytes0至65535%hu
signed short2bytes-32768至32767%hi、%hd
long int 4bytes 或
8bytes[1]
-2147483648至2147483647 或
-9223372036854775808至9223372036854775807
%li、%ld长整数(Long Integer)signed long
unsigned long4bytes 或
8bytes
0至4294967295 或
0至18446744073709551615
%lu 整数(Unsigned Integer)或

长整数(Unsigned Long Integer)

依赖于实现
signed long4bytes或
8bytes
-2147483648至2147483647 或
-9223372036854775808至9223372036854775807
%li、%ld 整数(Signed Integer)或

长整数(Signed Long Integer)

依赖于实现
long long8bytes-9223372036854775808至9223372036854775807%lli、%lld长整数(Long Integer)
unsigned long long8bytes0至18446744073709551615%llu长整数(Unsigned Long Integer)
float4bytes2.939x10−38至3.403x10+38 (7 sf)%f、%e、%g浮点数(Float)
double8bytes5.563x10−309至1.798x10+308 (15 sf)%lf、%e、%g双精度浮点型(Double Float)
long double10bytes或
16bytes
7.065x10-9865至1.415x109864 (18 sf或33 sf)%lf、%le、%lg双精度浮点型(Double Float)在大多数平台上的实现与double相同,实现由编译器定义。
_Bool1byte0或1%i、%d布尔型(Boolean)