自己写来方便自己回忆的,希望对你有益
1.输入输出技巧
cpp
// int 类型
int x_int;
scanf("%d", &x_int);
printf("%d\n", x_int);
// double 类型(优先使用,替代float)
double x_double;
scanf("%lf", &x_double);
printf("%lf\n", x_double);
// char 类型
char x_char;
scanf("%c", &x_char);
printf("%c\n", x_char);
// 字符串数组(无空格)
char s[105];
scanf("%s", s);
printf("%s\n", s);
cpp
char s_space[105];
gets(s_space); // 输入示例:how are you?
printf("%s\n", s_space);
cpp
// 日期解析 2019-10-21
int year, month, day;
scanf("%d-%d-%d", &year, &month, &day);
printf("%d %d %d\n", year, month, day);
// 时间解析 18:21:30
int hour, minute, second;
scanf("%d:%d:%d", &hour, &minute, &second);
printf("%d %d %d\n", hour, minute, second);
cpp
char c;
// 消除前序输入的回车
getchar();
// 读入字符
c = getchar();
// 输出字符
putchar(c);
printf("\n");
cpp
int a = 10;
printf("%x\n", a); // 小写十六进制(a)
printf("%X\n", a); // 大写十六进制(A)
printf("%o\n", a); // 八进制(12)
cpp
// 前置补0
int b = 5;
printf("%02d\n", b); // 05(宽度2,补0)
printf("%04d\n", b); // 0005(宽度4,补0)
// 保留小数
double c = 3.6;
printf("%.2lf\n", c); // 3.60(保留2位小数)
// 自动省略无意义小数(%g)
double d1 = 3.6, d2 = 5.0;
printf("%g\n", d1); // 3.6
printf("%g\n", d2); // 5
cpp
long long x_ll;
scanf("%lld", &x_ll);
printf("%lld\n", x_ll);
cpp
// 输出字符ASCII码
printf("%d\n", 'a'); // 97
printf("%d\n", 'A'); // 65
// char与int互转
char ch = 'b';
int ascii = ch; // ch='b' → ascii=98
ch = ascii + 1; // ascii=98+1 → ch='c'
printf("%c %d\n", ch, ascii); // c 98
总结
- 基础类型输入:int 用
%d、double 用%lf、char 用%c、字符串(无空格)用%s; - 结构化输入:scanf 格式串匹配分隔符(如
%d-%d-%d解析日期); - 格式输出:进制(% x/% X/% o)、补 0(%0nd)、保留小数(%.nlf)、自动去零(% g);
- 大整数用 long long,输入输出均为
%lld; - 带空格字符串用 gets,单个字符读写用 getchar/putchar。