题目
条件运算符与if else语句有什么区别?
怎么通过文本文件完成I/O操作?
if 的三种结构
if结构
if (test-condition)
statement
if else结构
if (test-condition)
statement1
else
statement2
if else if else结构
if (test-condition)
statement1
if else(test_condition2)
statement2
else
statement3
简单过过
就是与(and),或(or),非(not)
,在代码中可以直接用and,or,not代替
注意一下运算符优先级,实在记不了就()写到尾。而且啊,明明写()更容易读代码
就相当于一个工具库,懂有什么功能就行,要用在搜索也可以
分类总结:
cctype
中,用于简化字符相关的操作,例如判断字符是否为字母、数字、标点符号等。cctype
库中的函数返回int
类型的值,通常可以将它们视为bool
类型,因为非零值被视为true
,0被视为false
。cctype
库中的函数比使用AND和OR运算符更方便和通用。问题与答案:
cctype
库,它的作用是什么?
cctype
库是C++继承自C语言的字符函数库,它包含了一系列函数isalnum()
isalpha()
iscntrl()
isdigit()
isgraph()
islower()
isprint()
ispunct()
isspace()
isupper()
isxdigit()
tolower()
toupper()
怎么说,简简单单啦
总结:
expression1 ? expression2 : expression3
。expression1
为true,则整个条件表达式的值为expression2
的值;否则,整个表达式的值为expression3
的值。问题与答案:
不也是分支吗,多一点点细节而已;
重要概念:
switch语句的结构:
switch (integer-expression)
{
case label1: statement(s)
case label2: statement(s)
// ...
default: statement(s)
}
integer-expression
的值选择不同的执行路径。switch语句的工作原理:
integer-expression
的值跳转到相应的case标签。break语句的作用:
问题和答案:
switch语句与if-else语句相比有什么优势?
为什么要使用break语句?
提示:
如果既可以使用if else语句,也可以使用switch语句,则当选项不少于3个时,应使用switch语句。
还能说什么,太简单了,看图就行
goto语句:
char ch;
cin >> ch;
if (ch == 'P')
goto paris;
cout << ...
...
paris: cout << "You've just arrived at Paris.\n";
goto语句允许程序跳转到代码中的标签位置。
在示例中提到了goto paris;,这将使程序跳转到标签paris:处执行代码。
为什么要避免使用goto语句?
使用goto语句会导致代码变得难以理解和维护,因为它允许在代码中跳转到不同的位置,使控制流难以跟踪。
结构化控制语句(如循环和条件语句)提供了更清晰的控制流。
重要概念和可能的问题的总结:
cin和输入错误处理:
cin
来读取用户输入,并进行相应的处理。如果用户输入不匹配所期望的类型,cin
会将错误标志设置为failbit
,不匹配的输入将被留在输入队列中;并且进一步的输入将被忽略。清除错误状态:
cin.clear()
来重置cin
的错误状态,以便继续接受输入。这通常是在处理输入错误时的一部分。删除错误输入:
cin.get()
来删除输入缓冲区中的错误输入。这样可以确保下一次输入不受之前的错误输入的影响。可能的问题和答案:
为什么需要在读取输入之前重置cin
的错误状态?
cin
的错误状态被设置为failbit
时,它将拒绝进一步的输入。因此,需要使用cin.clear()
来重置错误状态,以便继续读取输入。为什么要使用内部的while
循环来删除错误输入?
while
循环用于清除输入缓冲区中的错误输入,以确保不会对后续输入产生干扰。这是一种处理输入错误的一般方法。while (cin.get() != '\n')
continue; // get rid of bad input
基本概念:
文本I/O和文本文件:
cin
和cout
等标准流用于文本I/O。文本文件是存储文本数据的文件,其中每个字节都包含字符编码。数据类型与文本输入:
cin
的行为不同。char
接收字符编码,int
和double
接收数字并将其转换为适当的数据类型,char
数组接收字符编码并存储为字符串。字符数组和cin.getline()
:
cin
会将字符编码存储在数组中。使用cin.getline()
时,cin
会读取直到遇到换行符,并将整行文本存储在数组中,以字符串形式。文本文件 vs. 二进制文件:
文本编辑器和源代码文件:
问题和答案:
为什么不同数据类型处理文本输入时,cin
的行为不同?
cin
会根据变量的数据类型执行适当的转换,将输入文本转换为相应的数据类型。什么是字符编码?
什么是二进制文件?
如何创建和编辑文本文件?
文本文件和二进制文件有什么区别?
前面第五章我们说过可以通过重定向来将文本文件输入
关于文本文件输入的总结:
头文件和命名空间:
来进行文件输入操作。std
来引用文件输入相关的元素。创建 ifstream 对象:
ifstream
对象,用于进行文件输入。您可以选择一个合适的名称,只需遵守 C++ 的命名规则。ifstream inFile; // inFile an ifstream object
ifstream fin; // fin an ifstream object
open()
方法将 ifstream
对象与特定文件关联。该方法接受文件名作为参数,可以是字符串常量或存储在字符数组中的文件名。inFile.open("bowling.txt"); // inFile used to read bowling.txt file
char filename[50];
cin >> filename; // user specifies a name
fin.open(filename); // fin used to read specified file
>>
运算符将各种类型的数据从文件中读取到程序中,就像使用 cin
一样。getline()
方法可以读取一行字符。eof()
和 fail()
方法来检查输入是否成功。double wt;
inFile >> wt; // read a number from bowling.txt
char line[81];
fin.getline(line, 81); // read a line of text
检查文件是否打开成功:
is_open()
方法来检查文件是否成功打开。如果文件无法打开,可以采取适当的措施,如退出程序。正确设计输入循环:
good()
方法来判断是否继续读取文件。问题和答案:
为什么需要包含
头文件?
头文件包含了用于文件输入操作的相关类和函数的定义,因此必须包含它才能使用文件输入功能。如何创建和命名 ifstream
对象?
ifstream
对象与创建其他类型的对象类似。您可以为对象选择一个合适的名称,只需遵守 C++ 的命名规则即可。如何将 ifstream
对象与文件关联?
open()
方法,该方法接受文件名作为参数,将 ifstream
对象与指定的文件建立关联。如何从文件中读取数据?
>>
运算符,将数据从文件中读取到程序中。数据的类型可以是各种基本数据类型,如整数、浮点数等。如何检查文件是否成功打开?
is_open()
方法来检查文件是否成功打开。可以使用条件语句来处理可能的打开错误。inFile.open("bowling.txt");
if (!inFile.is_open())
{
exit(EXIT_FAILURE);
}
如何正确设计输入循环?
good()
方法来检查是否继续读取文件。这可确保在读取输入之前先进行检查,并避免不必要的问题。如何处理文件中的不同数据类型?
关于文件输出的总结:
头文件和命名空间:
来进行文件输入/输出操作。std
来引用文件输出相关的元素。创建 ofstream 对象:
ofstream
对象,用于进行文件输出。可以根据需要命名对象,但必须遵循命名规则。ofstream outFile; // outFile an ofstream object
ofstream fout; // fout an ofstream object
open()
方法将 ofstream
对象与特定文件关联。outFile.open("fish.txt"); // outFile used to write to the fish.txt file
char filename[50];
cin >> filename; // user specifies a name
fout.open(filename); // fout used to read specified file
ofstream
对象与 <<
运算符将各种类型的数据输出到文件,就像使用 cout
输出到屏幕一样。double wt = 125.8;
outFile << wt; // write a number to fish.txt
char line[81] = "Objects are closer than they appear.";
fout << line << endl; // write a line of text
close()
方法关闭文件,以确保在程序完成后正确关闭文件。outFile.close();
可能的问题和答案:
为什么需要包含
头文件?
头文件包含了用于文件输入/输出操作的相关类和函数的定义,因此必须包含它才能使用文件输出功能。如何创建和命名 ofstream
对象?
ofstream
对象与创建其他类型的对象类似。您可以为对象选择一个合适的名称,只需遵守 C++ 的命名规则即可。如何将 ofstream
对象与文件关联?
open()
方法,该方法接受文件名作为参数,将 ofstream
对象与指定的文件建立关联。如何在文件中写入数据?
<<
运算符,将数据输出到已关联的文件中。数据的类型可以是各种基本数据类型,以及字符串等。为什么需要关闭文件?
如果文件已经存在,会发生什么?
open()
方法将首先截断文件,即清空文件内容,然后重新写入数据。这是为了确保文件不包含任何旧数据。但这种行为可以修改,根据需要添加或追加数据而不截断文件。如何检查文件打开是否成功?
open()
方法是否成功打开文件。可以使用条件语句来检查 open()
的返回值,以处理可能的错误情况。
来进行文件输入/输出操作。