c语言郑莉第四版答案,C语言程序设计(郑莉)课后习题答案

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

Friday, Saturday };

void main() { int i;

weekday d = Thursday; cout << \i = d;

cout << \

d = (weekday)6;

cout << \d = weekday( 4 );

cout << \}

程序运行输出: d = 4 i = 4 d = 6 d = 4

第三章 函数

3-1 C++中的函数是什么?什么叫主调函数,什么叫被调函数,二者之间有什么关系?如何调用一个函数? 解:

一个较为复杂的系统往往需要划分为若干子系统,高级语言中的子程序就是用来实现这种模块划分的。C和C++语言中的子程序就体现为函数。调用其它函数的函数被称为主调函数,被其它函数调用的函数称为被调函数。一个函数很可能既调用别的函数又被另外的函数调用,这样它可能在某一个调用与被调用关系中充当主调函数,而在另一个调用与被调用关系中充当被调函数。

调用函数之前先要声明函数原型。按如下形式声明: 类型标识符 被调函数名 (含类型说明的形参表); 声明了函数原型之后,便可以按如下形式调用子函数: 函数名(实参列表)

3-2 观察下面程序的运行输出,与你设想的有何不同?仔细体会引用的用法。

源程序:

#include

int main() {

int intOne;

int &rSomeRef = intOne;

intOne = 5;

cout << \cout << \

int intTwo = 8;

rSomeRef = intTwo; // not what you think! cout << \cout << \cout << \return 0; }

程序运行输出: intOne: 5 rSomeRef: 5

intOne: 8 intTwo: 8 rSomeRef: 8

3-3 比较值调用和引用调用的相同点与不同点。 解:

值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的单向传递过程,一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变,都不会影响到实参。 引用调用将引用作为形参,在执行主调函数中的调用语句时,系统自动用实参来初始化形参。这样形参就成为实参的一个别名,对形参的任何操作也就直接作用于实参。

3-4 什么叫内联函数?它有哪些特点? 解:

定义时使用关键字 inline的函数叫做内联函数;

编译器在编译时在调用处用函数体进行替换,节省了参数传递、

11

控制转移等开销;

内联函数体内不能有循环语句和switch语句;

内联函数的定义必须出现在内联函数第一次被调用之前; 对内联函数不能进行异常接口声明;

3-5 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗? 解:

不必一致,所有的参数是根据位置和类型而不是名字来区分的。

3-6 重载函数时通过什么来区分? 解:

重载的函数的函数名是相同的,但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

3-7 编写函数,参数为两个unsigned short int型数,返回值为第一个参数除以第二个参数的结果,数据类型为short int;如果第二个参数为0,则返回值为-1。在主程序中实现输入输出。 解: 源程序:

#include

short int Divider(unsigned short int a, unsigned short int b) {

if (b == 0) return -1; else return a/b; }

typedef unsigned short int USHORT; typedef unsigned long int ULONG; int main() {

USHORT one, two; short int answer;

cout << \cin >> one;

cout << \cin >> two;

answer = Divider(one, two); if (answer > -1)

cout << \else

cout << \return 0; }

程序运行输出: Enter two numbers. Number one:8 Number two:2 Answer: 4

3-8 编写函数把华氏温度转换为摄氏温度,公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。 解:

源程序见\实验指导\部分实验三

3-9 编写函数判断一个数是否是质数,在主程序中实现输入、输出。 解:

#include #include

int prime(int i); //判一个数是否是质数的函数

void main() { int i;

cout << \请输入一个整数:\cin >> i; if (prime(i))

cout << i << \是质数.\else

cout << i << \不是质数.\}

int prime(int i) {

12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值