C++primer第五章:语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、简单语句

空语句;

复合语句(块),一个块就是一个作用域,块不以分号结束。

二、语句作用域

定义在语句内部的变量只在语句内部可见。

三、条件语句

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;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值