云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C++语言程序设计课后答案(1)

C++语言程序设计课后答案(1)

  • 62 次阅读
  • 3 次下载
  • 2026/4/29 17:34:09

第 二 章 C++简单程序设计 2-10 执行完下列语句后,a、b、c三个变量的值为多少? a = 30; b = a++; c = ++a;

a:32 ; b:30 ; c:32;

2-13 写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。 解: for循环:

for (int n = 100; n <= 200; n += 2); while循环: int x = 100; while (n <= 200) n += 2;

do…while循环: int n = 100; do { n += 2;

} while(n <= 200);

2-17 修改下面这个程序中的错误,改正后它的运行结果是什么? #include void main() int i int j;

i = 10; /* 给i赋值 j = 20; /* 给j赋值 */

cout << \输出结果 */ return 0; } 解: 改正:

#include int main() { int i; int j;

i = 10; // 给i赋值 j = 20; /* 给j赋值 */

cout << \输出结果 */ return 0; }

程序运行输出: i + j = 30

2-18 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。

解: 源程序:

#include int main() { int i;

cout << \请输入一个数字:\cin >> i;

cout << \您输入一个数字是\return 0; }

程序运行输出:

2-20 打印ASCII码为32~127的字符。 #include int main() {

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

程序运行输出:

!\,./0123456789:;<>?@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\\]^'abcdefghijklmnopqrstuvwxyz<|>~s

2-21 运行下面的程序,观察其输出,与你的设想是否相同? #include int main() {

unsigned int x; unsigned int y = 100; unsigned int z = 50; x= y - z;

cout << \x = z - y;

cout << \difference is: \<< x <

程序运行输出: Difference is: 50

Now difference is: 4294967246

注意,第二行的输出并非 -50,注意x、y、z的数据类型。

2-22 运行下面的程序,观察其输出,体会i++与++i的差别。 #include int main() {

int myAge = 39; // initialize two integers

int yourAge = 39;

cout << \am: \<< myAge << \years old.\\n\

cout << \ou are: \ourAge << \ears old\\n\

myAge++; // postfix increment ++yourAge; // prefix increment cout << \ear passes...\\n\

cout << \am: \<< myAge << \years old.\\n\

cout << \ou are: \ears old\\n\

cout << \cout << \\<< myAge++ << \years old.\\n\

cout << \ou are: \<< ++yourAge << \years old\\n\

cout << \

cout << \am: \<< myAge << \years old.\\n\

cout << \ou are: \ears old\\n\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-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-31 用穷举法找出1~100间的质数,显示出来。分别使用while,do-while,for循环语句实现。 解: 源程序:

使用while循环语句: #include #include 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是质数. 83是质数. 89是质数. 97是质数.

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 你猜对了! 第三章 函数

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

#include int main() {

int intOne;

int &rSomeRef = intOne; intOne = 5;

cout << \cout << \<< rSomeRef << endl; int intTwo = 8;

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

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

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 << \two numbers.\\n Number one: \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-10 编写函数求两个整数的最大公约数和最小公倍数。 源程序:

#include #include

int fn1(int i,int j); //求最大公约数的函数

void main() { int i,j,x,y;

cout << \请输入一个正整数:\cin >> i ;

cout << \请输入另一个正整数:\cin >> j ; x = fn1(i,j); y = i * j / x;

cout << i << \和\<< j << \的最大公约数是:\

cout << i << \和\<< j << \的最小公倍数是:\}

int fn1(int i, int j) { int temp; if (i < j) { temp = i; i = j; j = i; }

while(j != 0) {

temp = i % j; i = j; j = temp; } return i; }

程序运行输出: 请输入一个正整数:120 请输入另一个正整数:72 120和72的最大公约数是:24 120和72的最小公倍数是:360 3-12 在主程序中提示输入整数n,编写函数用递归的方法求1 + 2 + … + n的值。 解:

#include #include int fn1(int i); void main() { int i;

cout << \请输入一个正整数:\cin >> i ;

cout << \从1累加到\的和为:\fn1(i) << endl;

}

int fn1(int i) { if (i == 1) return 1; else

return i + fn1(i -1); }

程序运行输出: 请输入一个正整数:100 从1累加到100的和为:5050 3-14 用递归的方法编写函数求Fibonacci 级数,公式为fib(n) = fib(n-1) + fib(n-2),n>2;

fib(1) = fib(2) = 1;观察递归调用的过程。 解:

源程序见\实验指导\部分实验三 3-15 用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入、输出; 解:

#include float p(int n, int x); void main() { int n,x;

cout << \请输入正整数n:\cin >> n;

cout << \请输入正整数x:\cin >> x;

cout << \cout << \

cout << \p(n,x) << endl; }

float p(int n, int x) { if (n == 0) return 1; else if (n == 1) return x; else

return ((2*n-1)*x*p(n-1,x) - (n-1)*p(n-2,x)) /n ; }

程序运行输出: 请输入正整数n:1 请输入正整数x:2 n = 1 x = 2

P1(2) = 2

请输入正整数n:3 请输入正整数x:4 n = 3 x = 4 P3(4) = 154

第 四 章 类

4-9 设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。 源程序:

#include class Rectangle { public:

Rectangle (int top, int left, int bottom, int right); ~Rectangle () {}

int GetTop() const { return itsTop; } int GetLeft() const { return itsLeft; } int GetBottom() const { return itsBottom; } int GetRight() const { return itsRight; } void SetTop(int top) { itsTop = top; } void SetLeft (int left) { itsLeft = left; } void SetBottom (int bottom) { itsBottom = bottom; }

void SetRight (int right) { itsRight = right; } int GetArea() const; private: int itsTop; int itsLeft; int itsBottom; int itsRight; };

Rectangle::Rectangle(int top, int left, int bottom, int right) {

itsTop = top; itsLeft = left; itsBottom = bottom; itsRight = right; }

int Rectangle::GetArea() const {

int Width = itsRight-itsLeft; int Height = itsTop - itsBottom; return (Width * Height); } int main() {

搜索更多关于: C++语言程序设计课后答案(1) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第 二 章 C++简单程序设计 2-10 执行完下列语句后,a、b、c三个变量的值为多少? a = 30; b = a++; c = ++a; a:32 ; b:30 ; c:32; 2-13 写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。 解: for循环: for (int n = 100; n <= 200; n += 2); while循环: int x = 100; while (n <= 200) n += 2; do…while循环: int n = 100; do { n += 2; } while(n <= 200); 2-17 修改下面这个程序中的错误,改正后它的运行结果是什么? #include <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com