一、if语句
if语句有两种格式:if和if else;
1.if语句
if (test-condition)
statement
如果test-condition(测试条件)为true,则程序执行statement(语句),如果条件为falsh,则程序跳过这条语句。if测试条件也会被强制转化为bool值,因此0将被转化为falsh,非零为true。
#include <iostream>
int main()
{
using namespace std;
char ch;
int spaces = 0;
int total = 0;
cin.get(ch);
while (ch != '.') // quit at end of sentence
{
if (ch == ' ') // check if ch is a space
++spaces;
++total; // done every time
cin.get(ch);
}
cout << spaces << " spaces, " << total;
cout << " characters total in sentence";
return 0;
}
当ch为空格的时候,if语句才被执行,++spaces。而语句++total是在if语句之外,所以while有执行该语句也会跟着执行。
if else
if(test-condition)
statement1
else
statement2
如果测试条件为true或为零,则执行程序执行statement1,跳过statement2;如果测试条件为falsh或0,则程序将跳过statement1,执行statement2。
while和if else一起使用,首先满足while语句,然后在让if语句判断执行statement1或者statement2,在采用statement2采用++ch时候,程序仍会输出字母,当statement2采用ch+的时候,程序就会输出ASCII码加1。
3.if else if else结构
#include<iostream>
const int Fave=27;
int main()
{
using namespace std;
int n;
cout << "Enter a number in the range 1-100 to find";
cout << "my favorite number:";
do
{
cin >> n;
if(n<Fave)
cout << "Too low --guess again:"
else if (n>Fave)
cout <<"Too high --guess again:"
else
cout <<Fave <<"is right!/n";
}while(n!=Fave);
return 0;
}
二、逻辑表达式
3种逻辑表达式分别是逻辑OR(||)、逻辑AND(&&)和逻辑NO(!)。
1.逻辑OR
逻辑OR是只要一方为真就为真,只有当两方都为假的时候才是假。
2.逻辑AND
逻辑AND是要两方都为真的时候才是真,但凡一方为假就是假。
3.逻辑NO
!运算符就是将后面的表达式真值取反。也就是说如果expression为真,那么!expression为假;如果expression为假,那么!expression为真。
三、字符函数库cctype
#include <iostream>
#include <cctype> // prototypes for character functions
int main()
{
using namespace std;
cout << "Enter text for analysis, and type @"
" to terminate input.\n";
char ch;
int whitespace = 0;
int digits = 0;
int chars = 0;
int punct = 0;
int others = 0;
cin.get(ch); // get first character
while (ch != '@') // test for sentinel
{
if(isalpha(ch)) // is it an alphabetic character?
chars++;
else if(isspace(ch)) // is it a whitespace character?
whitespace++;
else if(isdigit(ch)) // is it a digit?
digits++;
else if(ispunct(ch)) // is it punctuation?
punct++;
else
others++;
cin.get(ch); // get next character
}
cout << chars << " letters, "
<< whitespace << " whitespace, "
<< digits << " digits, "
<< punct << " punctuations, "
<< others << " others.\n";
// cin.get();
// cin.get();
return 0;
}
四、?:运算符
条件运算符(?:)常被用来代替if else语句,也是C++中唯一一个需要3个操作数的运算符,
expression1?expression2:expression3
如果expression1为true,则整个表达式的值为expression2的值;否则整个表达式的值为expression3的值。
5>3?10:12 // 5>3为真,所以该表达式的值为10。
下面的例子就是为了比较a、b的值,然后将最大值赋值给c。
#include <iostream>
int main()
{
using namespace std;
int a, b;
cout << "Enter two integers: ";
cin >> a >> b;
cout << "The larger of " << a << " and " << b;
int c = a > b ? a : b; // c = a if a > b, else c = b
cout << " is " << c << endl;
return 0;
}
五、switch语句
switch语句是为了能够更容易地从大型列表中进行选择,也就是有多个选择的时候应用。
switch (integer-expression)
{
case label 1: statement(s)
case label 2: statement(s)
……
default : statement(s)
}
integer-expression 必须是一个结果为整数值的表达式。当integer-expression的值为2,则程序将执行标签为case2:那一行。
#include <iostream>
using namespace std;
void showmenu(); // function prototypes
void report();
void comfort();
nt main()
{
showmenu();
int choice;
cin >> choice;
while (choice != 5)
{
switch(choice)
{
case 1 : cout << "\a\n";
break;
case 2 : report();
break;
case 3 : cout << "The boss was in all day.\n";
break;
case 4 : comfort();
break;
default : cout << "That's not a choice.\n";
}
showmenu();
cin >> choice;
}
cout << "Bye!\n";
// cin.get();
// cin.get();
return 0;
}
void showmenu()
{
cout << "Please enter 1, 2, 3, 4, or 5:\n"
"1) alarm 2) report\n"
"3) alibi 4) comfort\n"
"5) quit\n";
}
void report()
{
cout << "It's been an excellent week for business.\n"
"Sales are up 120%. Expenses are down 35%.\n";
}
void comfort()
{
cout << "Your employees think you are the finest CEO\n"
"in the industry. The board of directors think\n"
"you are the finest CEO in the industry.\n";
}
当输入5的时候,while循环结束。输入1-4的将执行switch列表中的相应操作,输入6将执行默认语句。如果在这个语句中输入任意一个字母,输入语句将失效,导致循环不断运行,直至终止。
六、break和continue语句
break 和continue语句都能使程序跳过部分代码,可以在switch语句或者任何循环中使用break语句,使程序跳到switch或循环后面的语句执行。
#include <iostream>
const int ArSize = 80;
int main()
{
using namespace std;
char line[ArSize];
int spaces = 0;
cout << "Enter a line of text:\n";
cin.get(line, ArSize);
cout << "Complete line:\n" << line << endl;
cout << "Line through first period:\n";
for (int i = 0; line[i] != '\0'; i++)
{
cout << line[i]; // display character
if (line[i] == '.') // quit if it's a period
break;
if (line[i] != ' ') // skip rest of loop
continue;
spaces++;
}
cout << "\n" << spaces << " spaces\n";
cout << "Done.\n";
return 0;
}
七、读取数字的循环
#include <iostream>
const int Max = 5;
int main()
{
using namespace std;
// get data
int golf[Max];
cout << "Please enter your golf scores.\n";
cout << "You must enter " << Max << " rounds.\n";
int i;
for (i = 0; i < Max; i++)
{
cout << "round #" << i+1 << ": ";
while (!(cin >> golf[i])) {
cin.clear(); // reset input
while (cin.get() != '\n')
continue; // get rid of bad input
cout << "Please enter a number: ";
}
}
// calculate average
double total = 0.0;
for (i = 0; i < Max; i++)
total += golf[i];
// report results
cout << total / Max << " = average score "
<< Max << " rounds\n";
// cin.get();
// cin.get();
return 0;
}
八、简单的文件输入\输出
1.文本I\O和文本文件:
当使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据——文本数据,然后cin对象负责将文本转化为其他类型。
2.写入到文本文件中
对于文件输入,C++类似于cout的东西。文件输入:
必须包含头文件iostream;
头文件iostream定义一个用处理输出的ostream类;
头文件iostream声明了一个名为cout的ostream变量(对象);
必须指明名称空间std;
可以结合使用cout和运算符<<来显示各种类型的数据。
文件输出:
必须包含头文件fstream;
头文件fstream定义了一个用于处理输出的ofstream类;
需要声明一个或者多个ofstream变量(对象),并以自己喜欢的方式对其命名,遵循常用的命名规则;
必须指明名称空间std;
需要将ofstream对象与文件关联起来。为此方法之一是使用open()方法;
使用完文件后,应该使用方法close()将其关闭;
可结合ofstream对象和运算符<< 来输出各种类型的数据。
使用文件输出的主要步骤就是:
包含头文件fstream;
创建一个ofstream对象;
将该ofstream对象同一个文件关联起来;
就像使用cout那样使用ofstream对象。
#include<iostream>
#include <fstream>
int main()
{
using namespace std;
char automobile[50];
int year;
double a_price;
double d_price;
ofstream outFile; // create object for output
outFile.open("carinfo.txt"); // associate with a file
cout << "Enter the make and model of automobile: ";
cin.getline(automobile, 50);
cout << "Enter the model year: ";
cin >> year;
cout << "Enter the original asking price: ";
cin >> a_price;
d_price = 0.913 * a_price;
// display information on screen with cout
cout << fixed;
cout.precision(2);
cout.setf(ios_base::showpoint);
cout << "Make and model: " << automobile << endl;
cout << "Year: " << year << endl;
cout << "Was asking $" << a_price << endl;
cout << "Now asking $" << d_price << endl;
// now do exact same things using outFile instead of cout
outFile << fixed;
outFile.precision(2);
outFile.setf(ios_base::showpoint);
outFile << "Make and model: " << automobile << endl;
outFile << "Year: " << year << endl;
outFile << "Was asking $" << a_price << endl;
outFile << "Now asking $" << d_price << endl;
outFile.close(); // done with file
// cin.get();
// cin.get();
return 0;
}
3.读取文本文件
必须包含头文件iostream;
头文件iostream定义一个用处理输出的ostream类;
头文件iostream声明了一个名为cout的ostream变量(对象);
必须指明名称空间std;
可以结合使用cout和运算符<<来显示各种类型的数据。
可以使用cin和get()方法来读取一个字符,使用cin和getline()来读取一行字符;
可以结合使用cin和eof()、fail()方法来判断是否输入成功;
对象cin本身被用作测试条件时,如果最后一个读取操作成功,它将被转化为布尔值true,否则转化成false;
文件输出:
必须包含头文件fstream;
头文件fstream定义了一个用于处理输出的ifstream类;
需要声明一个或者多个ifstream变量(对象),并以自己喜欢的方式对其命名,遵循常用的命名规则;
必须指明名称空间std;
需要将ifstream对象与文件关联起来。为此方法之一是使用open()方法;
使用完文件后,应该使用方法close()将其关闭;
可结合ifstream对象和运算符<< 来输出各种类型的数据;
可以使用ifstram和get()方法来读取一个字符,使用ifsream和getline()来读取一行字符;
可以结合使用ifstream和eof()、fail()方法来判断是否输入成功;
ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转化为布尔值true,否则转化成false;
#include <iostream>
#include <fstream> // file I/O support
#include <cstdlib> // support for exit()
const int SIZE = 60;
int main()
{
using namespace std;
char filename[SIZE];
ifstream inFile; // object for handling file input
cout << "Enter name of data file: ";
cin.getline(filename, SIZE);
inFile.open(filename); // associate inFile with a file
if (!inFile.is_open()) // failed to open file
{
cout << "Could not open the file " << filename << endl;
cout << "Program terminating.\n";
// cin.get(); // keep window open
exit(EXIT_FAILURE);
}
double value;
double sum = 0.0;
int count = 0; // number of items read
inFile >> value; // get first value
while (inFile.good()) // while input good and not at EOF
{
++count; // one more item read
sum += value; // calculate running total
inFile >> value; // get next value
}
if (inFile.eof())
cout << "End of file reached.\n";
else if (inFile.fail())
cout << "Input terminated by data mismatch.\n";
else
cout << "Input terminated for unknown reason.\n";
if (count == 0)
cout << "No data processed.\n";
else
{
cout << "Items read: " << count << endl;
cout << "Sum: " << sum << endl;
cout << "Average: " << sum / count << endl;
}
inFile.close(); // finished with the file
// cin.get();
return 0;
}
先在目录下创建一个WWW.txt的记事本,再从该文本中打开。