提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、简单语句
空语句;
;
复合语句(块),一个块就是一个作用域,块不以分号结束。
二、语句作用域
定义在语句内部的变量只在语句内部可见。
三、条件语句
if、switch-case(case必须为整形)-break-default、
本节练习
#include<iostream>
#include<vector>
using namespace std;
/*
int main() {
vector<string> vec{ "F", "D", "C" ,"B", "A", "A++" };
int grade;
int lettergrade;
cin >> grade;
if (grade < 60)
lettergrade = 0;
else
lettergrade = (grade - 50) / 10;
cout << vec[lettergrade] << endl;
}
*/
int main() {
vector<string> vec{ "F", "D", "C" ,"B", "A", "A++" };
int grade;
int lettergrade;
cin >> grade;
(grade < 60)? (lettergrade = 0) : (lettergrade = (grade - 50) / 10);
cout << vec[lettergrade] << endl;
}
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, spCnt = 0, tabCnt = 0, nCnt = 0;
char ch;
while (cin >> ch) {
if (ch == 'a' || ch == 'A')
++aCnt;
else if (ch == 'e' || ch == 'E')
++eCnt;
else if (ch == 'i' || ch == 'I')
++iCnt;
else if (ch == 'o' || ch == 'O')
++oCnt;
else if (ch == 'u' || ch == 'U')
++uCnt;
else if (ch == ' ')
++spCnt;
else if (ch == ' ')
++tabCnt;
else if (ch == '/n')
++nCnt;
}
}
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, spCnt = 0, tabCnt = 0, nCnt = 0;
char ch;
while (cin >> ch) {
switch (ch)
{
case 'a' :
++aCnt;
break;
case 'e':
++eCnt;
break;
case 'i':
++iCnt;
break;
case 'o':
++oCnt;
break;
case 'u':
++uCnt;
break;
default:
break;
}
}
}
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
const unsigned ival = 512, jval = 1024, kval = 4096;
unsigned bufsize;
unsigned swt = 512;
switch (swt) {
case ival:
bufsize = ival * sizeof(int);
break;
}
}
四、迭代语句
用while控制输入输出流,在windows系统下ctrl+z为结束标志,在linux系统下ctrl+d为结束标志,空格与回车将字符隔开
# include<iostream>
int main(){
int sum = 0,value = 0;
while (std::cin >> value)
{
sum += value;
}
std::cout << sum;
}
本节练习
#include<iostream>
using namespace std;
int main() {
string s, a, sout;
int ival = 1, iout = 0 ;
while (cin >> s)
{
(s == a) ? (++ival) : (iout = ival, ival = 1);
a = s;
if (ival > 1)
sout = s;
else if (s == "oo")
break;
}
if (sout.empty())
cout << "�������ĵ���";
else
cout << "����" << sout << "����������" << iout << "��";
}
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> vec1{ 0, 1, 2 }, vec2{ 0, 1, 2, 3, 4, };
decltype(vec1.size()) sz, j = 0;
vec1.size() <= vec2.size() ? (sz = vec1.size()) : (sz = vec2.size());
for (decltype(vec1.size()) i = 0; i != sz; ++i) {
if (vec1[i] == vec2[i])
j += 1;
else
break;
}
if (j == sz) {
if (sz == vec1.size())
cout << "vec1Ϊvec2��ǰ" << endl;
else
cout << "vec1Ϊvec2��ǰ" << endl;
}
}
#include<iostream>
using namespace std;
int main() {
do {
cout << "����������string����" << endl;
string s1, s2;
cin >> s1 >> s2;
if (s1.size() < s2.size())
cout << s1 << endl;
else
cout << s2 << endl;
} while (true);
}
五、跳转语句
包括break和continue,break跳出最近的循环,continue直接开始下一次迭代。
六、try语句块和异常处理
本节练习
#include<iostream>
using namespace std;
int main() {
int ival, jval;
while (cin >> ival >> jval) {
try
{
if (jval == 0)
throw runtime_error("����������Ϊ0");
cout << ival / jval;
}
catch (runtime_error err)
{
cout << err.what()
<< "\n�Ƿ���������, ������y����n" << endl;
char c;
if (!cin || c == 'n')
break;
}
}
}