C++中的输入输出语句(cin/cout和scanf/printf)
对于任何一个程序来说,输入/输出是与用户交互的核心功能。用户通过输入给程序提供数据,程序再通过输出向用户显示处理结果。
scanf() 用于从标准输入(通常是键盘)读取数据。例如:
注意,在 num 前面要加上“&”表示取出 num 这个变量的地址,因为 C语言是面向过程的编程语言,并且没有引用类型,所以想要在函数内改变一个变量的值,就得把变量的地址传入函数。
printf() 用于向标准输出(通常是屏幕)写入数据。例如:
cin 用于从标准输入读取数据。例如:
cout 用于向标准输出写入数据。例如:
与 scanf() 和 printf() 相比,cin 和 cout 的优势在于,它们能够自动识别变量类型,无须指定格式符,这使得代码更加简洁易读。例如以下代码:
虽然输入/输出的数据类型不同,但是我们无须修改输入/输出的代码,无论 num 和 str 两个变量是什么数据类型,cin 和 cout 两行代码都不针对不同数据类型进行修改。
与 scanf() 和 printf() 相比,cin 和 cout 的速度稍慢,在处理大量输入/输出的情况下,通常可以通过关闭同步流来提高读写速度,这也是算法竞赛中比较好的实践。这可以通过以下代码实现:
使用 C++ 的 cin 对象读取整数,然后使用 cout 对象输出整数:
使用 C++ 的 cin 对象读取浮点数,然后使用 cout 对象输出浮点数:
使用 C++ 的 cin 对象读取字符串,然后使用 cout 对象输出字符串:
C++:
scanf和printf
scanf() 和 printf() 是C语言中的输入/输出函数,不过在 C++ 中也可以使用,并且具有较高的执行速度。scanf() 用于从标准输入(通常是键盘)读取数据。例如:
scanf("%d", &num);用于读取用户输入的一个整数,然后把这个整数的值存储到变量 num 中。在这个函数中,"%d" 是格式符,表示要读取的数据是整数类型。
注意,在 num 前面要加上“&”表示取出 num 这个变量的地址,因为 C语言是面向过程的编程语言,并且没有引用类型,所以想要在函数内改变一个变量的值,就得把变量的地址传入函数。
printf() 用于向标准输出(通常是屏幕)写入数据。例如:
printf("%d", num);把变量 num 的值显示在屏幕上。同样,"%d" 表示我们要输出整数类型的数据。
cin和cout
C++ 提供了更高层次的输入/输出方式,分别是 cin 和 cout,它们是基于标准输入/输出对象的。cin 用于从标准输入读取数据。例如:
cin >> num;用于读取用户输入的一个整数(假设 num 是一个整数变量),然后把这个整数的值存储到变量 num 中。
cout 用于向标准输出写入数据。例如:
cout << num;用于把变量 num 的值显示在屏幕上。
与 scanf() 和 printf() 相比,cin 和 cout 的优势在于,它们能够自动识别变量类型,无须指定格式符,这使得代码更加简洁易读。例如以下代码:
#include <iostream> #include <string> using namespace std; int main() { int num; // 定义一个整型变量 num string str; // 定义一个字符串变量 str // 从标准输入读取一个整数和一个字符串,分别赋值给 num 和 str cin >> num >> str; // 将 num 和 str 输出到标准输出 cout << num << str; return 0; // 返回 0 表示程序正常结束 }在这个示例程序中,首先引入(即包含)了头文件,然后使用 std 命名空间避免频繁加前缀。接下来,定义了一个整型变量 num 和一个字符串变量 str。通过使用 cin 对象,我们可以从标准输入读取一个整数和一个字符串,并将它们分别存储在变量 num 和 str 中。最后,我们使用 cout 对象将 num 和 str 的值输出到标准输出。
虽然输入/输出的数据类型不同,但是我们无须修改输入/输出的代码,无论 num 和 str 两个变量是什么数据类型,cin 和 cout 两行代码都不针对不同数据类型进行修改。
与 scanf() 和 printf() 相比,cin 和 cout 的速度稍慢,在处理大量输入/输出的情况下,通常可以通过关闭同步流来提高读写速度,这也是算法竞赛中比较好的实践。这可以通过以下代码实现:
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
各种输入/输出示例
1) 输入/输出整数
使用 C 语言的 scanf() 函数读取整数,然后使用 printf() 函数输出整数:scanf("%d", &num); printf("%d", num);
使用 C++ 的 cin 对象读取整数,然后使用 cout 对象输出整数:
cin >> num; cout << num;
2) 输入/输出浮点数
使用 C 语言的 scanf() 函数读取浮点数,然后使用 printf() 函数输出浮点数:scanf("%f", &x); printf("%f", x);
使用 C++ 的 cin 对象读取浮点数,然后使用 cout 对象输出浮点数:
cin >> x; cout << x;
3) 输入/输出字符串
使用 C 语言的 scanf() 函数读取字符串,然后使用 printf() 函数输出字符串:scanf("%s", str); printf("%s", str);
使用 C++ 的 cin 对象读取字符串,然后使用 cout 对象输出字符串:
cin >> str; cout << str;
4) 输入/输出数组
C语言:for (i = 0; i < n; i++) { scanf("%d", &arr[i]); // 使用循环逐个读取数组元素 } for (i = 0; i < n; i++) { printf("%d ", arr[i]); // 使用循环逐个输出数组元素 }
C++:
for (int i = 0; i < n; ++i) { cin >> a[i]; // 使用循环逐个读取数组元素 } for (int i = 0; i < n; ++i) { cout << a[i] << ' '; // 使用循环逐个输出数组元素,并在元素后输出一个空格字符 }