分支语句和逻辑运算符

if语句

//统计字符串中的字符个数,以及空白
int main()
{
	char ch;
	int count = 0;
	int space = 0;
	cout << "Enter characters;Enter # to quit" << endl;

	cin.get(ch);   //先读一个 防止第一个就为#
	while (ch != '#')
	{
		if (ch == ' ')
			space++;
		count++;
		cin.get(ch);
	}
	cout << "\n";
	cout << count << " character read" << endl;  //字符总数中包含回车生成的换行符
	cout << space << " space read" << endl;
}

逻辑表达式

  1. or ||
  2. and &&
  3. not !将后面表达式的真值取反
    x>5&&x<10 等价于 (x>5)&&(x<10)
    注意:
  4. !优先级高于所有的关系运算符和算术运算符。因此要对表达式取反,必须用括号将其括起来
    !(x>5),若x>5 ,则!(x>5)的值为false
    !x>5 , 永远为false,因为!x 为0或1,永远小于5.
  5. and (&&)优先级高于||
    age>50&&age<50 ||weight>20 等价于( age>50&&age<50 )||weight>20
  6. C++确保程序从左向右进行计算逻辑表达式,并在知道答案后立即停止
    x!=0 &&1.0/x>1000.0 若x!=0 为false,则不判断后面的,表达式的值为0.
    也可以用下面的方法表达
    在这里插入图片描述

字符函数库cctype

C++从c语言继承了一个与字符相关的,非常方便的函数软件包,可以简化诸如确定字符是否为大写字符,是否有数字,标点等工作。头文件cctype。
在这里插入图片描述

?:运算符

c++中唯一需要3个操作数的运算符。

switch语句

将枚举量用作标签

int main()
{
	enum Color {red,yello,blue,purse};

	
	cout << "Enter code (0-4)\n" << endl;
	int code;
	cin >> code;
	while (code >= red && code <= purse)
	{
		switch (code)
		{
			case red: cout << "red" << endl; break;
			case yello: cout << "yello" << endl; break;
			case blue: cout << "blue" << endl; break;
			case purse: cout << "purse" << endl; break;
		}
		cin >> code;
	}
}

switch 和if

switch语句中每个标签必须是一个单独的值,另外这个值必须是整数,包括char。switch无法处理浮点型的测试。若选项长度超过两个,就代码长度和执行速度而言,switch会合适点。

break continue goto

int main()
{
	int a = 10;
	if (a > 5)
		goto Par;
	Par:cout << "this is goto" << endl;
}

读取数字的循环

使用cin输入表达式的值来检测输入是不是数字,程序发现 输入错误的内容后,应该采取的以下步骤:重置cin以接受新的输入,删除错误输入,提示用户重新输入。(必须重置cin后才能删除错误的输入)

int main()
{
	const int Max = 5;
	int golf[Max];
	cout << "Please Enter your golf scores \n";
	cout << "you must enter " << Max << endl;
	for (int i = 0; i < Max; i++)
	{
		cout << "round # " << i + 1 << ": ";
		while (!(cin>>golf[i]))
		{ 
			cin.clear();    //重置输入
			while (cin.get()!='\n')
			{
				continue;             //去除错误的输入
			}
			cout << "Please input a  int : " ;
		}
	}
	cout << "Done\n";
}

简单文件输入输出(文本文件)

C++将读取键盘输入和在屏幕上显示输出的技巧用于文件的输入输出(文本IO)

文本IO和文本文件

文本IO:使用cin进行输入时,程序将输入视为一系列字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始就是字符数据——文本数据。然后cin对象负责将文本转换为其它类型
输入行: 38.5 19.2

  1. char ch ; cin>>ch;
    输入行中的第一个字符被赋值给ch,此处是3.其字符编码(二进制)被存储在变量ch中。输入和目标变量都是char,不必转换。下一输入操作将对8进行处理。
  2. int n; cin>>n;
    这种情况下,cin将不断读取,直到遇到非数字字符,即. 。句点将成为输入队列下一个字符。cin通过计算发现,这两个字符对应的数值为38,因此将38的二进制编码复制到变量n中。
  3. double n; cin>>n;
    cin将不断读取,直到遇到第一个不属于浮点数的字符,即cin读取38.5 ,空格成为输入队列下一个字符。cin通过计算发现,这两个字符对应的数值为38.5,因此将38的二进制编码复制到变量n中。
  4. char word[50]; cin>>word;
    cin将不断读取,直到遇到空白字符,即cin读取38.5 ,空格成为输入队列下一个字符。cin将3 8 . 5 这四个字符的字符编码存储到数组word中,并在末尾加一个空字符。
  5. char word[50]; cin.getline(word,50);
    cin将不断读取,直到遇到换行字符,所有字符都被存储在数组word中,并在末尾加一个空字符,换行符被丢掉。输入队列中的下一个字符是下一行字符中的第一个字符。
    对于输出,将执行相反的操作,整数转为数字字符序列,浮点数转为数字字符序列和其它字符组成的字符序列,字符数据不做任何转换。
    注意:输入一开始为文本,因此控制台输入的文件版本是文本文件,即每个字节存储一个字符编码的文本文件。

写文本文件

cout:

  1. 头文件 iostream , 其内部定义了一个用于处理输出的ostream类,声明了一个cout的ofstream对象
  2. 指定名称空间std。 cout和<< 显示各类数据。
    文件输出与cout类似
  3. 头文件 fstream,其内部定义了一个用于处理输出的ofstream类,根据需要自行创建对象。
  4. 指定名称空间std。
  5. 将ofstream对象与文件关联起来,方法之一使用open(),用完记得close
  6. 使用ofstream对象 和<< 将各类数据输出到文件中。
    注意:所有可用于cout的操作和方法(<< ,endl ,setf()) 都可以用为ofstream对象。
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
	ofstream out;
	//open 接受一个C风格的字符串作为参数,可以是字面字符串,也可以是存储在数组中的
	out.open("123.txt");  //若文件不存在,则创建,存在则截短为0;此外打开文件可能失败,应该增加失败的处理
	double price = 48.5;
	double arm = 0.368;
	char str[] = "hello";
	out << fixed;
	out.precision(2);
	out.setf(ios_base::showpoint);
	out << "Speak : " << str << endl;
	out << "price : " << price*arm << endl;
	out.close();
}

输出:123.txt文件内容如下
Speak : hello
price : 17.85

读文本文件

cin:

  1. 头文件 iostream , 其内部定义了一个用于处理输入的istream类,声明了一个cin的ifstream对象
  2. 指定名称空间std。 cin和>> 显示各类数据。
  3. 使用cin和get读取一个字符,cin和getline读取一行
  4. 结合使用cin,eof(),fail()判断输入是否成功
  5. 对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将转换为bool 的true值。
    文件输出与cin类似
  6. 头文件 fstream,其内部定义了一个用于处理输入的ifstream类,根据需要自行创建对象。
  7. 指定名称空间std。
  8. 将ofstream对象与文件关联起来,方法之一使用open(),用完记得close()
  9. 使用ifstream对象 和<< 将各类数据输出到文件中。
  10. 使用eof() fail()等方法判断输入是否成功
  11. ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将转换为bool 的true值。
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
	ifstream in;

	in.open("123.txt");  //若文件不存在,则创建,存在则截短为0;此外打开文件可能失败,应该增加失败的处理
	int count=0;
	int sum = 0;
	int value;
	in >> value;   //读取第一个
	while (in.good())     //该方法在没有发生任何错误时,返回true
	{
		count++;  
		sum += value;
		in >> value;
	}
	if (in.eof())
	{
		cout << "end of eof\n";
	}
	else if(in.fail())  //若文件中的数据类型不对,则打印此信息
	{
		cout << "input terminated by data mistake\n";
	}
	else
	{
		cout<< "input terminated by unknow  mistake\n";
	}
	cout << sum << endl;
	cout << count << endl;
	in.close();
}

注意: 1. 读取操作中类型不匹配,则fail 返回true, 遇到EOF也返回true
2. 文件受损或硬件故障,bad返回true
3. eof(),只能检查是否到了文件尾,fail可以检查类型是否匹配
4. 方法good()指出最后一次的输入操作是否成功。意味着在读取输入的操作后,立即应用这种测试。标准方法如上所示。
表达式in >> value的结果为in,而在需要一个bool值得情况下in得结果为in.good()即true或false。
因此可以用下述替换上面得循环。(将两条输入语句用一条替代)
while(in>>value){}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值