程序需要和用户交流。最基础的交流方式就是输出(output)信息,以及从键盘读取输入(input)。
printf()
printf() 用于向屏幕输出文本或变量值。它只会在格式字符串包含 \n 时换行。
有些字符在程序中有特殊意义,需要使用转义字符(escape character)输出。
\\:反斜杠\':单引号\":双引号\n:换行\t:制表符
printf("\"Hello\nWorld\"\n");运行结果:
"Hello
World"知识测验
题目
在字符串中,转义字符 \n 表示什么?
格式化输出
使用 printf() 可以通过占位符(placeholder)把变量嵌入格式字符串。
%d:整数%f:浮点数%s:字符串
int length = 10;
int width = 5;
double area = length * width;
printf("面积:%d * %d = %.2f\n", length, width, area);运行结果:
面积:10 * 5 = 50.00格式字符串中的占位符按顺序对应逗号后的参数;%.2f 表示以浮点格式保留两位小数。
printf("面积:%d * %d = %.2f\n", length, width, area);知识测验
题目
如果 area = 50,下面哪个 printf 语句会显示两位小数?
控制输出结尾
printf() 不会自动换行,因此可以连续拼接输出;需要结束当前行时,在格式字符串中写入 \n。
int num1 = 1;
int num2 = 2;
int num3 = 4;
int num4 = 8;
printf("%d, ", num1);
printf("%d, ", num2);
printf("%d, ", num3);
printf("%d...\n", num4);运行结果:
1, 2, 4, 8...scanf 输入
scanf 按格式字符串从标准输入读取值,例如 %d 读取 int,%lf 读取 double。
scanf("%127s", text) 可把一个不含空白的文本记号保存到字符数组 text 中,并通过宽度限制避免越界。
printf("半径:");
double r;
scanf("%lf", &r);
double area = 3.141592653589793 * r * r;
printf("面积:%.2f\n", area);一次可能的运行过程:
半径:5
面积:78.54这里 scanf("%lf", &r) 直接读取 double 值;3.141592653589793 是示例中直接写出的圆周率近似值。
知识测验
题目
scanf("%127s", text) 通常把输入保存到什么类型中?
互动实验
输出实验台
访问权限免费
依次点击三张代码卡,观察每条语句如何改变终端输出。
动手练习
计算两点之间的距离
读取两个坐标点,输出平面距离。
- 分别读取 x1、y1、x2、y2 四个浮点数。
- 按照距离公式计算两点距离。
- 把结果保留两位小数后输出。
动手练习
制作一个温度记录卡
读取一个摄氏温度,把它保存到语义清晰的变量里,计算华氏温度后再输出一份简洁报告。
- 用 scanf("%lf", &value) 读取一个摄氏温度。
- 把华氏温度保存到变量 fahrenheit 中。
- 再创建一个字符串变量 reportTitle,并把标题与换算结果一起输出。