Appearance
📥03.输入与输出流
1. 输入和输出👀
在编程中:
输入(Input) 是指程序从外部(键盘、文件等)获取数据的过程。
输出(Output) 则是程序将处理结果或信息发送到外部(屏幕、文件等)的过程。掌握输入输出流能让程序与用户互动,处理更复杂的数据,从而更有用。
2. C++和C风格的输入和输出🧀
C语言和C++是两种编程语言,C++可以认为是C语言的一种扩展,但是需要注意的是,并不是所有的C语言程序都可以在C++中运行的:
TIP
C++ 在很大程度上包含了 C,但不是完全的包含。
2.1 C++风格:cout与cin
- 我们可以使用
cout来输出我们想要输出的内容,比如在屏幕上输出 hello world!
c++
std::cout << "hello world" <<std::endl;其中我们需要用双引号把 hello world这个符号包含起来,不然电脑会将其误认为两个变量hello和world处理,显然这样就发生了错误。
cout可以输出变量:
cpp
int x = 10,y = 20;
std::cout << x << " " << y <<std::endl;x和y中间增加了一个空格,这是为了让10和20显示为10 20,而不是1020
- 对于输入,我们使用
cin来获取用户的输入,比如获取输入并把这个值存放到变量x之中:
c++
int x;
std::cin >> x;cin可以同时获取多个输入:int x,y; std::cin >> x >> y;
输入过程中,需要用空格来区分两个数字,最后按回车来表示输入完成了。
2.2 C ++ 风格的输入与输出示例程序
cpp
#include <iostream>
int main() {
int x;
std::cout << "请输入一个整数:";
std::cin >> x;
std::cout << "你输入的是:" << x << std::endl;
return 0;
}TIP
由于这个程序没有使用 using namespace std;指定命名空间,也就是说我们需要写std::cout或std::cin,而不能像之前的程序一样,直接写cout或cin。
2.3 C 风格:printf 与 scanf
printf()可以输入变量和文本:
cpp
int x = 10;
printf("变量x的值为:%d\n",x);这段语句可以输出变量x的值为:10。
%d 是一种格式说明符,它告诉 printf 将对应的参数当作“带符号十进制整数”来格式化输出。如果要输出的变量是单精度浮点数,需要%d改成%f以浮点数的格式输出。其中\n表示换行,接下来的输出将会在它的下一行开始。
常见格式说明符:%d(整数)、%f(浮点数)、%c(字符)、%s(字符串)等。对于浮点数,你可以使用%.3f来制定输出3位小数,此时第3位不是精确的值,而是第四位四舍五入的结果:
cpp
#include <cstdio>
int main() {
float x = 25.3698514;
printf("x的值为:%.3f\n", x); // 格式化输出
return 0; // 返回 0
}输出:x的值为:25.370
printf()可以同时输出多个值:
cpp
float x = 25.3;
int y = 10;
printf("x的值为:%.3f,y的值为 %d\n", x,y); // 格式化输出scanf()用来从键盘获取输入文本:
c++
int x;
scanf("%d", &x);TIP
使用时必须传入变量地址(如 &x),否则无法修改变量的值。这是因为我们必须告诉scanf这个变量存放到哪里,这样才可以去修改他的信息。
scanf()可以一次性接受多个值:c++int x,y; scanf("%d %d",&x,&y);电脑将会把输入的第一个值和的第二个值分别存放到变量
x和变量y中。输入的时候可以选择用逗号或者是空格将第一个数值和第二个数值分开。
2.4 C 风格的输入与输出示例程序
cpp
#include <cstdio>
int main() {
int age;
printf("请输入你的年龄:"); // 输出提示
scanf("%d", &age); // 读取整数输入
printf("你今年 %d 岁。\n", age); // 格式化输出
return 0; // 返回 0
}TIP
通常单独的scanf()只能接收数值,有时候我们可以在之前使用printf()来输出一些提示语。
3. 小结🍔
- C++ 风格(
std::cin/std::cout)语法直观、类型安全,适合初学者和简单交互。 - C 风格(
scanf/printf)在格式化控制方面更灵活,能够一次性读取或输出多个变量,但使用不当易引起缓冲区溢出或输入错误。 - 根据需求选择:需要简单、可靠的交互就用 C++ 风格;需要精细格式化或兼容考试内容就用 C 风格。
4. 练习📝
- 编写程序,读取用户姓名(字符串)和年龄(整数),分别用
std::cin/std::cout和scanf/printf两种方式实现输出“Hello, 姓名!你今年 年龄 岁”。 - 使用
printf输出一个浮点数,保留三位小数。 - 编写程序,提示输入三个整数,使用
scanf读取后计算并输出它们的平均值,格式化输出保留一位小数。 - 挑战:读取用户多行文本(以空行结束),统计并输出总字符数,可使用
std::getline或scanf。