提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、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.0是double类型:当一个操作数是 double,另一个是 int,会把 int 自动提升为 double。
2-8 在执行完下面语句后,a b c三个变量的值是多少
a = 30;
b = a++;
c = ++a;
这里主要考的是前置++和后置++的区别:
a = 30,然后先将a赋值给b,a再进行++,所以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语句的使用

被折叠的 条评论
为什么被折叠?



