当前位置:首页 > C++语言程序设计课后答案(1)
第 二 章 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
i = 10; /* 给i赋值 j = 20; /* 给j赋值 */
cout << \输出结果 */ return 0; } 解: 改正:
#include
i = 10; // 给i赋值 j = 20; /* 给j赋值 */
cout << \输出结果 */ return 0; }
程序运行输出: i + j = 30
2-18 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。
解: 源程序:
#include
cout << \请输入一个数字:\cin >> i;
cout << \您输入一个数字是\return 0; }
程序运行输出:
2-20 打印ASCII码为32~127的字符。 #include
for (int i = 32; i<128; i++) cout << (char) i; return 0; }
程序运行输出:
!\,./0123456789:;<>?@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\\]^'abcdefghijklmnopqrstuvwxyz<|>~s
2-21 运行下面的程序,观察其输出,与你的设想是否相同? #include
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 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 { 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 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 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 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 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 cout << \请猜这个数的值为多少?(0~~100):\cin >> m; if (n > m) cout << \你猜的值太小了!\else if (n < m) cout << \你猜的值太大了!\else cout << \你猜对了!\} } //使用do…while语句 #include 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 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 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 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 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 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() {
共分享92篇相关文档