C++第二章习题解析与实战演练

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


提示:以下是本篇文章正文内容,下面案例可供参考

一、do-while语句

用do-while语句编程,求自然数1~10之和

#include<iostream>

using namespace std;

int main(){
	int n = 10;
	int i = 1;
	int sum = 0;
	do{
		sum += i;
		i++;
	}while(i<=n); //这里要有分号
	cout << sum << endl;
	return 0;
}

二、计算图形面积

程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出图形面积后将其显示出来。

注意:
PI为3.14怎么定义?
面积S定义成int还是float?
每一个case语句结束之后要加break
default不用加break

#include<iostream>

using namespace std;

int main(){
	float S = 0;
	const float PI = 3.14;
	int type;
	cin >> type;
	switch(type){
		case 0:
			int r;
			cout << "请输入半径:" << endl; 
			cin >> r;
			S = PI*r*r;
			cout << S << endl;
			break;
		case 1:
			int a, b;
			cout << "请输入长和宽:" << endl;
			cin >> a >> b;
			S = a*b;
			cout << S << endl;
			break;
		case 2:
			int c;
			cout << "请输入正方形的边长:" << endl;;
			cin >> c;
			S = c*c;
			cout << S << endl;
			break;
		default:
			cout << "不合法输入" << endl;
	}
	
}

三、第二章习题

2-7 下面表达式的值是多少

(1)201/4
(2)201%4
(3)201/4.0

(1)50 (2)1 (3)50.25
在 C++ 中,除法运算 / 的行为取决于 操作数的数据类型
如果是201.0/4结果也是50.25,因为201.0double类型:当一个操作数是 double,另一个是 int,会把 int 自动提升为 double。

2-8 在执行完下面语句后,a b c三个变量的值是多少

a = 30;
b = a++;
c = ++a;

这里主要考的是前置++后置++的区别:
a = 30,然后先将a赋值给ba再进行++,所以b=30,a=31
然后先将a++再赋值给c,所以a=31,c=32

2-17 打印ASCII码为32~127的字符

虽然i定义为int类型,但是通过强制类型转换(char) i,会将整数变成对应的ASCII字符输出

#include<iostream>

using namespace std;

int main(){
	for(int i = 32; i < 128; i++){
		cout << (char) i;
	}
	return 0;
}

2-18 运行下面程序,观察其输出与你设想是否相同

#include<iostream>

using namespace std;

int main(){
	unsigned int x;
	unsigned int y = 100;
	unsigned int z = 50;
	x=y-z;
	cout << x << endl;
	x=z-y;
	cout << x << endl;
	return 0;
}

输出:

50
4294967246

注意这个代码第二个输出并不是-50
unsigned int:无符号整数,只能表示 0 2³²-1(32 位系统,通常是 0~4294967295)。
**无符号数永远不会是负数。**如果计算结果小于 0,会发生 模 2³² 的环绕。

2-22 若a=1,b=2,c=3,下列各式的结果是什么

a|b-c   //-1
a^b&-c  //1
a&b|c   //3
a|b&c   //3
优先级运算符描述结合性
1()圆括号,函数调用左到右
2++--(前置)、+-(一元)前置自增/自减、正负号右到左
3*/%乘、除、取模左到右
4+-加、减左到右
5<<>>左移、右移左到右
6<<=>>=比较运算左到右
7==!=等于、不等于左到右
8&按位与左到右
9^按位异或左到右
10``按位或左到右
11&&逻辑与左到右
12``逻辑或左到右
13?:三元运算符右到左
14=+=-=*=/=赋值运算符右到左
15,逗号运算符左到右

对于复杂表达式:

先加括号明确顺序

关键是记住 一元 > 乘除 > 加减 > 位运算 > 逻辑 > 赋值

2-25 编写一个程序,运行时向用户提问“你考试考了多少分?(0~100)”,接收输入后判断其等级显示出来,规则如下:

优 90≤ 分数 ≤100
良 80≤ 分数<90
中 60≤ 分数<80
差 0≤ 分数 <60

#include<iostream>

using namespace std;

int main(){
	cout << "你考试考了多少分?(0~100)" << endl;
	int score;
	cin >> score;
	int i = score / 10;
	switch(i){
		case 10:
		case 9:
			cout << "优" << endl;
			break;
		case 8:
			cout << "良" << endl;
			break;
		case 6: 
		case 7:
			cout << "中" << endl;
			break;
		default:
			cout << "差" << endl;
	}
}

2-26 实现一个简单的菜单程序,要求输出如下所示:

Menu: A(dd) D(elets) S(ort) Q(uit), Select one:A
数据已经增加
Menu: A(dd) D(elets) S(ort) Q(uit), Select one:S
数据已经排序
Menu: A(dd) D(elets) S(ort) Q(uit), Select one:D
数据已经删除
Menu: A(dd) D(elets) S(ort) Q(uit), Select one:Q

(1)要求使用if-else语句
(2)要求使用switch语句
注意使用switch语句的时候,case Q:不能用break了,因为break只能跳出switch语句,不能跳出while循环,想一想怎么跳出switch和while

#include<iostream>

using namespace std;

int main(){
	char x;
	
	while(1){
		cout << "Menu: A(dd) D(elets) S(ort) Q(uit), Select one:";
		cin >> x;
		switch(x){
		case 'A':
			cout << "数据已经增加" << endl;
			break;
		case 'D':
			cout << "数据已经删除" << endl;
			break;
		case 'S':
			cout << "数据已经排序" << endl;
			break;
		case 'Q':
			return 0;
		default:
			;
		}
	}
}

总结

C++第二章的习题,主要是运算符的优先级、for语句、while语句、do-while语句、switch语句的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值