C++与C语言的区别——C++是对C语言的扩展(二)——输入cin与输出cout

        C++中使用cin和cout 完成输入输出操作。与scanf和printf 不同,scanf 和printf  是函数,而cin 和cout 是类对象。,属于流操作符。什么是流呢?术语“流”想要表达的意思是:随着时间的推移,字符是顺序生成或者消耗的。咱们看一下是如何“流”的.

        1) 流输入只决定了先后顺序

        比如说下面这段代码

int a,b;
cin >> a >>b;

实际上等价于cin >>a, cin >>b,你千万不要以为此时a =b了。

        2)可以输入输出不同类型的变量      

int a;char b;
cin >>a>>b;
 在C++中这样输入是完全可以的,不受空格、回车或者Tab键的影响。但是在C语言中,输入就比较麻烦。

        3)格式化输出

        C语言中,Printf() 函数拥有强大的格式控制输出。C++也可以实现。说明一个小知识点,由于计算机没有FPU,对于浮点型的数据,小数位都是不准确的。

        cout 默认输出6位有效数字。但是流算子setw()可以设置域宽,但是要包含头文件 #include <iomanip>。比如下面这段代码。

int main()
{
	int a = 12345;
	cout << "xxxxxxxxxxxx" << endl;
	cout << setw(8) << a << endl;
}

输出结果为:

 是不是就输出了8位啊~

如果要设置左对齐呢,也很方便,比如下面:(右对齐是 right)

int main()
{
	int a = 12345;
	cout << "xxxxxxxxxxxx" << endl;
	cout << setiosflags(ios::left )<<setw(8) << a << endl;
}
得到结果:


如果我们想设置小数点位数呢?将setprecision(n)<<setiosflag(ios::fiexed)组合起来使用即可

int main()
{
	float a = 1.28273959705267;
	cout << setprecision(3) << setiosflags(ios::fixed) << a << endl;//setprecision(3)设置小数点位数,需要四舍五入

	cout << setprecision(4) << setiosflags(ios::fixed) << a << endl;

}
得到结果:



如果想按照进制输出呢?代码如下

int main()
{
	int a = 100;
	cout << dec << a << endl;//默认是十进制
	cout << oct << a << endl;//八进制
	cout << hex << a << endl;//十六进制
	cout << setbase(16) << a << endl;//十六进制
}
结果如下:



如果想设置填充符呢,代码如下:

int main()
{
	int a = 1234;
	cout << "xxxxxxxxxxxxxx" << endl;
	cout << setw(10) << a << endl;
	cout << setfill('x') << setw(10) << a << endl;
	cout << setfill('x') <<setiosflags(ios ::left) << setw(10) << a << endl;//左对齐以后,在右面填充 x
}
结果如下:



        4) 读取数量不定的输入数据

        当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果遇到文件结束符(按下 Ctrl +Z,松开手,然后按回车)或者遇到一个无效输入时,istream对象状态变为无效。比如说读取 n 和数,计算前 n 个数据之和。代码如下:

int main()
{
	int sum = 0, value = 0;
	while (cin >> value)
	{
		sum += value;
	}
	cout << "sum = " << sum << endl;
	return 0;
}


 注意,空格和 enter 键都不能结束流输入。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用模板方式实现顺序表的合并 #include "stdafx.h" #include #define MaxSize 100 template class SeqList { private: T * Mylist; int ListMaxSize; int Length; public: SeqList(int ListMaxSize=MaxSize); //构造函数 ~SeqList(void);// 析构函数 bool SLIsEmpty(void); // 判断表是否为空 bool SLIsFull(void);//判断表是否满 int ListLength(void){return Length;}//求表长度 T SLGetElem(int i); // 取得第i个元素的值 int SLFind(T & x,int index); //查找值为x的结点 bool SLInsert(int i,T & x); // 在表的第i个位置插入新结点 bool SLDelete(int i); // 删除表的第i个位置的结点 void CreateList(int num);// 创建一个包含num个元素的顺序表 void SLPrint(); //输出全体元素 }; template SeqList ::SeqList(int listMaxSize) //初始化顺序表 { if(listMaxSize>0){ ListMaxSize=listMaxSize; Length=0; Mylist=new T [ListMaxSize]; // 创建连续的表空间 } } template SeqList ::~SeqList(void) { delete [] Mylist;//删除表,释放表空间 } template void SeqList ::CreateList(int num) { T x; Length=0; cout << "请输入"<<num<<"个整数数据元素以创建一个线性表"<<endl; for (int i=0;i>x; Mylist[i]=x; Length++; } } template bool SeqList ::SLIsEmpty(void) // 判断表是否为空 { return (Length<=0)?true:false; //表空则返回真(true),否则返回假(false) } template bool SeqList ::SLIsFull(void)//判断表是否满 { return(Length>=ListMaxSize)?true:false; //表满则返回真(true),否则返回假(false) } template T SeqList ::SLGetElem(int i) // 取得第i个元素的值 { return(iLength-1)?-1:Mylist[i]; } template int SeqList ::SLFind(T & x,int index) //查找值为x的结点 { for(int i=0;i<index;i++) if(Mylist[i]==x) return i+1; return -1;//没有找到给定元素 } template bool SeqList ::SLInsert(int i,T & x) // 在表的第i个位置插入新结点 { if(iLength) {cout <<"参数i不合理!" <<endl; return false;} else if(Length==ListMaxSize) {cout<< "表已满,无法插入!"<i;j--) Mylist[j]=Mylist[j-1]; Mylist[j]=x; Length++; return true; } } template <clas
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值