int myAge = 39; // initialize two integers int yourAge = 39;
cout << \cout << \myAge++; // postfix increment ++yourAge; // prefix increment 变量有以下几种存储类型:
auto存储类型:采用堆栈方式分配内存空间,属于一时性存储,其存储空间可以被若干变量多次覆盖使用; register存储类型:存放在通用寄存器中;
extern存储类型:在所有函数和程序段中都可引用; static存储类型:在内存中是以固定地址存放的,在整个程序cout << \
cout << \cout << \cout << \
cout << \cout << \cout << \
cout << \cout << \return 0; } 解:
程序运行输出: I am 39 years old You are 39 years old One year passes I am 40 years old You are 40 years old Another year passes I am 40 years old You are 41 years old Let's print it again I am 41 years old You are 41 years old
2-23 什么叫常量?什么叫变量? 解:
所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外,也可以为常量命名,这就是符号常量;在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。
2-24 变量有哪几种存储类型? 解:
运行期间都有效。
2-25 写出下列表达式的值: 1. 2 < 3 && 6 < 9 2. ! ( 4<7 )
3. ! ( 3 > 5) || (6 < 2 ) 解: 1. true 2. false 3. true
2-26 若a = 1,b = 2,c = 3,下列各式的结果是什么? 1. a | b - c 2. a ^ b & -c 3. a & b | c 4. a | b & c 解: 1. -1 2. 1 3. 3 4. 3
2-27 若a = 1,下列各式的结果是什么? 1. ! a | a 2. ~ a | a 3. a ^ a 4. a >> 2 解: 1. 1 2. -1 3. 0 4. 0
6
2-28 编写一个完整的程序,实现功能:向用户提问\现在正在下雨吗?\,提示用户输入Y或N。若输入为Y,显示\现在正在下雨。\; 若输入为N,显示\现在没有下雨。\;否则继续提问\现在正在下雨吗?\ 解: 源程序:
#include
void main() {
char flag; while(1) {
cout << \现在正在下雨吗?(Yes or No):\cin >> flag;
if ( toupper(flag) == 'Y') {
cout << \现在正在下雨。\break; }
if ( toupper(flag) == 'N') {
cout << \现在没有下雨。\break; } } }
程序运行输出:
现在正在下雨吗?(Yes or No):x 现在正在下雨吗?(Yes or No):l 现在正在下雨吗?(Yes or No):q 现在正在下雨吗?(Yes or No):n 现在没有下雨。 或:
现在正在下雨吗?(Yes or No):y 现在正在下雨。
2-29 编写一个完整的程序,运行时向用户提问\你考试考了多少分?(0~100)\,接收输入后判断其等级,显示出来。规则如下:
解:
#include
void main() {
int i,score;
cout << \你考试考了多少分?(0~100):\cin >> score;
if (score>100 || score<0)
cout << \分数值必须在0到100之间!\else {
i = score/10; switch (i) { case 10: case 9:
cout << \你的成绩为优!\break; case 8:
cout << \你的成绩为良!\break; case 7: case 6:
cout << \你的成绩为中!\break; default:
cout << \你的成绩为差!\} } }
程序运行输出:
你考试考了多少分?(0~100):85 你的成绩为良!
2-30 (1)实现一个简单的菜单程序,运行时显示\A(dd) D(elete) S(ort) Q(uit), Select one:\提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示\数据已经增加、删除、排序。\输入为Q时程序结束。要求使用if ? else语句进行判断,用break、continue控制程序流程。 解:
#include
7
#include
void main() {
char choice,c; while(1) {
cout << \, Select one:\cin >> c;
choice = toupper(c); if (choice == 'A') {
cout << \数据已经增加. \continue; }
else if (choice == 'D') {
cout << \数据已经删除. \continue; }
else if (choice == 'S') {
cout << \数据已经排序. \continue; }
else if (choice == 'Q') break; } }
程序运行输出:
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a 数据已经增加.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d 数据已经删除.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s 数据已经排序.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q
(2)实现一个简单的菜单程序,运行时显示\D(elete) S(ort) Q(uit), Select one:\提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示\数据已经增加、删除、排序。\输入为Q时程序结束。要求使用Switch语句。 解: 源程序:
#include
void main() {
char choice; while(1) {
cout << \, Select one:\
cin >> choice;
switch(toupper(choice)) {
case 'A':
cout << \数据已经增加. \break; case 'D':
cout << \数据已经删除. \break; case 'S':
cout << \数据已经排序. \break; case 'Q': exit(0); break; default: ; } } }
程序运行输出:
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a 数据已经增加.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d 数据已经删除.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s 数据已经排序.
Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q
2-31 用穷举法找出1~100间的质数,显示出来。分别使用while,do-while,for循环语句实现。 解: 源程序:
使用while循环语句: #include
8
void main() {
int i,j,k,flag; i = 2;
while(i <= 100) {
flag = 1; k = sqrt(i); j = 2;
while (j <= k) {
if(i%j == 0) {
flag = 0; break; } j++; }
if (flag)
cout << i << \是质数.\i++; } }
使用do?while循环语句: #include
void main() {
int i,j,k,flag; i = 2; do{ flag = 1; k = sqrt(i); j = 2; do{
if(i%j == 0) {
flag = 0; break; } j++;
}while (j <= k); if (flag)
cout << i << \是质数.\i++;
}while(i <= 100);
}
使用for循环语句: #include
void main() {
int i,j,k,flag;
for(i = 2; i <= 100; i++) {
flag = 1; k = sqrt(i);
for (j = 2; j <= k; j++) {
if(i%j == 0) {
flag = 0; break; } }
if (flag)
cout << i << \是质数.\} }
程序运行输出: 2是质数. 3是质数. 5是质数. 7是质数. 11是质数. 13是质数. 17是质数. 19是质数. 23是质数. 29是质数. 31是质数. 37是质数. 41是质数. 43是质数. 47是质数. 53是质数. 59是质数. 61是质数. 67是质数. 71是质数. 73是质数. 79是质数.
9
83是质数. 89是质数. 97是质数.
2-32 比较Break语句与Continue语句的不同用法。 解:
Break使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句,不能用在别处;
continue 语句结束本次循环,接着开始判断决定是否继续执行下一次循环;
2-33 定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 解:
源程序见\实验指导\部分实验二
2-34 在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while、do?while语句实现循环。 解:
//使用while语句 #include
void main() { int n = 18; int m = 0; while(m != n) {
cout << \请猜这个数的值为多少?(0~~100):\cin >> m; if (n > m)
cout << \你猜的值太小了!\else if (n < m)
cout << \你猜的值太大了!\else
cout << \你猜对了!\}
}
//使用do?while语句 #include
void main() { int n = 18; int m = 0; do{
cout << \请猜这个数的值为多少?(0~~100):\cin >> m; if (n > m)
cout << \你猜的值太小了!\else if (n < m)
cout << \你猜的值太大了!\else
cout << \你猜对了!\}while(n != m); }
程序运行输出:
请猜这个数的值为多少?(0~~100):50 你猜的值太大了!
请猜这个数的值为多少?(0~~100):25 你猜的值太大了!
请猜这个数的值为多少?(0~~100):10 你猜的值太小了!
请猜这个数的值为多少?(0~~100):15 你猜的值太小了!
请猜这个数的值为多少?(0~~100):18 你猜对了!
2-35 定义枚举类型weekday,包括Sunday到Saturday七个元素在程序中定义weekday类型的变量,对其赋值,定义整型变量,看看能否对其赋weekday类型的值。 解:
#include
enum weekday { Sunday, Monday, Tuesday, Wednesday, Thursday,
10