你在用scanf和printf输入输出数据时,是不是感觉到有一点不便?
由于这两个函数需要用格式控制符和对应数据类型匹配,如果不匹配就会出错。
假设定义一个整型变量a和一个双精度实型变量x:
int a;
doubel x;
则输入时必须得这么写:
scanf(“%d%lf”, &a, &x);
如果不小心写成了:
scanf(“%f%d”, &a, &x);
或者变量名前面漏写了&,变成:
scanf(“%d%lf”, a, x);
则程序运行就不能得到正确结果了。
那么,有没有一种更简便的方法,不管什么%d%lf,也不需要在变量名前面再多加一个&,可以吗?
可以,用输入流cin来输入整数和实数给变量a和x赋值:
cin>>a>>x;
是不是很方便?
cin和cout是C++语言的输入输出流,但是C语言和C++语言是兼容的,所以在C语言中也可以用cin和cout。
如果要使用cin和cout,那么在程序的前面就不是这么写:
#include <stdio.h>
而是改成:
#include <iostream>
using namespace std;
一、C语言的输入输出:scanf和printf
在C语言中,我们最常用的输入输出函数是scanf和printf,它们包含在<stdio.h>头文件中。
1. printf函数:数据的输出窗口
printf函数用于向屏幕输出数据,它的基本语法是:
printf(“格式控制字符串”, 输出项列表);
格式控制字符串中包含普通字符和格式说明符。
普通字符会原样输出,而格式说明符(以%开头)则会被后面相应的变量值替换。
常用的格式说明符有:
%d:输出整数
%f:输出浮点数
%c:输出字符
%s:输出字符串
2. scanf函数:从键盘读取数据
scanf函数用于从键盘读取输入数据,语法格式为:
scanf(“格式控制字符串”, 变量地址列表);
需要注意的是,scanf中的变量前面要加上&符号(取地址符),由于我们需要告知函数数据要存放在内存的哪个位置。
3. 实战示例:学生信息录入程序
让我们通过一个具体的例子来理解scanf和printf的使用:

这个程序运行时会先提示用户输入姓名、年龄和成绩,然后将这些信息整理后输出。在输出成绩时,我们使用了”%.2f”来控制只显示两位小数,这种精细的格式控制是printf的一个优势。

二、C++的输入输出:cin和cout
C++在C语言的基础上,提供了更加方便易用的输入输出方式——cin和cout。它们包含在<iostream>头文件中,使用时一般加上”using namespace std;”这句代码。
1. cout:更简单的输出方式
cout的使用比printf更加直观,它使用”<<“运算符来输出数据:
cout << 输出内容;
cout最大的优点是可以自动识别数据类型,不需要像printf那样记忆各种格式说明符。
如果需要换行,可以使用endl或者”
“。
2. cin:更便捷的输入方式
cin使用”>>”运算符来读取输入:
cin >> 变量;
使用cin时,不需要在变量前加&符号,这减少了出错的概率。
3.用C++重写学生信息程序
目前,让我们用C++的cin和cout来重写刚才的学生信息程序:


三、C++的输入输出流特点
1. 更加直观
cout << “姓名:” << name << endl;
这行代码读起来就像是在说:
输出姓名,然后输出name变量的值,然后换行
这超级符合人类的思维习惯。
2. 类型安全
cin和cout会自动处理数据类型,不会出现printf中那种格式符与变量类型不匹配的问题。
3. 扩展性好
如果我们要输出一个自定义的学生类对象,cin和cout可以通过重载运算符来直接支持,而scanf和printf则做不到这一点。
四、两种输入输出方式的优劣
1. scanf/printf的优势
格式控制更加精细灵活;执行效率一般更高;在嵌入式开发等资源受限环境中更常用。
2. cin/cout的优势
使用简单,不易出错;类型安全,编译时就能发现错误;支持自定义类型的输入输出;代码可读性更好。
3. 学习提议
对于初学者来说,如果从cin和cout开始学习可能更容易掌握,由于它们更友善。当你对编程有了必定理解后,再根据实际需要学习scanf和printf的详细用法。
但是反过来,先学习scanf和printf的用法,再学习cin和cout,会更容易上手。
任何事都一样,先学难的,再学容易的,都容易上手。
五、在实际项目中,你可以根据具体需求来选择
如果是学习、做小项目或者对性能要求不高的场景,用cin和cout就很好;
如果需要处理大量数据或者对性能要求很高,可以思考使用scanf和printf;
在同一个项目中,最好保持风格一致,不要混用两种方式。
六、总结
输入输出是编程的基础,无论是C语言的scanf/printf还是C++的cin/cout,都是我们与程序交互的重大工具。scanf/printf给了我们准确控制的权力,而cin/cout则提供了便捷安全的使用体验。
就像写字一样,有人喜爱用钢笔,有人喜爱用圆珠笔,每种工具都有它的适用场景。
重大的是掌握它们的特点,在合适的场合使用合适的工具。
希望这篇文章能协助你更好地理解C/C++的输入输出,为你的编程之路打下坚实的基础。




这也得向你学习一下
欢迎,共同探讨
向你学习👍
C++输入输出真方便👍
了解了两种方式优缺点
666