输入与输出
需要引入头文件#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个格式符即可:
%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;
}
关键字 | 字节 | 范围 | 格式化字符串 | 硬件层面的类型 | 备注 |
---|---|---|---|---|---|
char | 1bytes | 通常为-128至127或0至255,与体系结构相关 | %c | 字节(Byte) | 大多数情况下即signed char; 在极少数1byte != 8bit或不使用ASCII字符集的机器类型上范围可能会更大或更小。其它类型同理。 |
unsigned char | 1bytes | 通常为0至255 | %c、%hhu | 字节 | |
signed char | 1bytes | 通常为-128至127 | %c、%hhd、%hhi | 字节 | |
int | 2bytes(16位系统) 或 4bytes | -32768至32767或 -2147483648至2147483647 | %i、%d | 字(Word)或双字(Double Word) | 即signed int (但用于bit-field时,int可能被视为signed int,也可能被视为unsigned int) |
unsigned int | 2bytes 或 4bytes | 0至65535 或 0至4294967295 | %u | 字或双字 | |
signed int | 2bytes 或 4bytes | -32768至32767 或 -2147483648至2147483647 | %i、%d | 字或双字 | |
short int | 2bytes | -32768至32767 | %hi、%hd | 字 | 即signed short |
unsigned short | 2bytes | 0至65535 | %hu | 字 | |
signed short | 2bytes | -32768至32767 | %hi、%hd | 字 | |
long int | 4bytes 或 8bytes[1] | -2147483648至2147483647 或 -9223372036854775808至9223372036854775807 | %li、%ld | 长整数(Long Integer) | 即signed long |
unsigned long | 4bytes 或 8bytes | 0至4294967295 或 0至18446744073709551615 | %lu | 整数(Unsigned Integer)或 长整数(Unsigned Long Integer) | 依赖于实现 |
signed long | 4bytes或 8bytes | -2147483648至2147483647 或 -9223372036854775808至9223372036854775807 | %li、%ld | 整数(Signed Integer)或 长整数(Signed Long Integer) | 依赖于实现 |
long long | 8bytes | -9223372036854775808至9223372036854775807 | %lli、%lld | 长整数(Long Integer) | |
unsigned long long | 8bytes | 0至18446744073709551615 | %llu | 长整数(Unsigned Long Integer) | |
float | 4bytes | 2.939x10−38至3.403x10+38 (7 sf) | %f、%e、%g | 浮点数(Float) | |
double | 8bytes | 5.563x10−309至1.798x10+308 (15 sf) | %lf、%e、%g | 双精度浮点型(Double Float) | |
long double | 10bytes或 16bytes | 7.065x10-9865至1.415x109864 (18 sf或33 sf) | %lf、%le、%lg | 双精度浮点型(Double Float) | 在大多数平台上的实现与double 相同,实现由编译器定义。 |
_Bool | 1byte | 0或1 | %i、%d | 布尔型(Boolean) |