输出和输入
输出
输出:将程序的运行结果输出到控制台或终端窗口中
printf 语法格式
c
int printf(const char *format, ...);
- format 参数是一个格式化字符串,包含了输出的格式控制信息
- 后面的参数
...
是可变参数,参数 (要输出的数据) 长度不固定
格式化占位符
- 格式化占位符
打印格式 | 对应数据类型 | 含义 |
---|---|---|
%c | char | 字符型,输入的数字按照 ASCII 码相应转换为对应的字符 |
%hd | short int | 短整数 |
%hu | unsigned short | 无符号短整数 |
%d | int | 接受整数值并将它表示为有符号的十进制整数 |
%u | unsigned int | 无符号 10 进制整数 |
%ld | long | 接受长整数值并将它表示为有符号的十进制整数 |
%f | float | 单精度浮点数 |
%lf | double | 双精度浮点数 |
%e,%E | double | 科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写 |
%s | char * | 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符) |
%p | void * | 以 16 进制形式输出指针 |
%o | unsigned int | 无符号 8 进制整数 |
%x,%X | unsigned 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;
}