C语言程序设计(郑莉)课后习题答案 下载本文

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 #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 #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 #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 #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 #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