C++ Primer Pluse_7_课后题
- #include <iostream>
- using namespace std;
- double Sum2(double x, double y)
- {
- double sum = 0;
- if (x + y < 0.0000000001)
- {
- cout << "x, y 的调和数为无穷大;\n";
- system("pause");
- exit(0);
- }
- sum = 2.0*x*y / (x + y);
- return sum;
- }
- void test7_1()
- {
- double x;
- double y;
- double sum = 0;
- while ((cin>>x>>y) && x != 0 && y!=0)
- {
- sum = Sum2(x, y);
- cout << "x,y的调和为: " << sum << endl;
- }
- }
- /************************************************************************/
- /* 2 */
- /************************************************************************/
- const int SIZE = 10;
- int GetScores(double scores [],int *size)
- {
- cout << "Enter the scores( press q to quit).\n";
- int i = 0;
- for (i = 0; i < 10 && cin >> scores[i]; i++)
- {
- if (scores[i]<0)
- {
- cout << "score below zero, bad input.\n";
- cout << "Input terminated.\n";
- return -1;
- }
- }
- *size = i;
- return 0;
- }
- void Show(const double * scores, int size)
- {
- int i = 0;
- for (i = 0; i < size; i++)
- {
- cout << scores[i] << " ";
- }
- cout << endl;
- }
- double Average(const double *scores, int size)
- {
- double sum = 0;
- if (size == 0)
- {
- return 0;
- }
- for (int i = 0; i < size; i ++)
- {
- sum += scores[i];
- }
- return sum/size;
- }
- void test7_2()
- {
- int size = 0;
- double scores[SIZE] = { 0 };
- int ret = 0;
- ret = GetScores(scores, &size);
- while (ret != 0)
- {
- cout << "Please input again.\n";
- ret = GetScores(scores, &size);
- }
- Show(scores, size);
- double avg = Average(scores, size);
- cout << "平均成绩为:" << avg << endl;
- }
- /************************************************************************/
- /* 3 */
- /************************************************************************/
- typedef struct Box
- {
- char maker[40];
- float height;
- float width;
- float length;
- float volume;
- }box;
- void ShowBox(box b1)
- {
- cout << "Showing the box......\n";
- cout << b1.maker << endl;
- cout << b1.height << endl;
- cout << b1.width << endl;
- cout << b1.length << endl;
- cout << b1.volume << endl;
- }
- void GetVol(box * b1)
- {
- b1->volume = b1->height *b1->length*b1->width;
- }
- void test7_3()
- {
- box b1 = { "Cat", 10, 2, 3, 0 };
- ShowBox(b1);
- GetVol(&b1);
- ShowBox(b1);
- }
- /************************************************************************/
- /* 4 */
- /************************************************************************/
- void test7_4()
- {
- }
- /************************************************************************/
- /* 5 */
- /************************************************************************/
- long GetFactorial(int n)
- {
- if (n == 0 || n == 1)
- {
- return 1;
- }
- else
- return n*GetFactorial(n - 1);
- }
- void test7_5()
- {
- int n = 0;
- cin >> n;
- if (n < 0)
- {
- cout << "bad input.\nprogram terminated.\n";
- return;
- }
- cout << n << "! = " << GetFactorial(n)<<endl;
- }
- void test7_6()
- {
- }
- /************************************************************************/
- /* 7 */
- /************************************************************************/
- const int Max = 5;
- double * full_array(double ar[], int limit)
- {
- double *ar_end = ar;
- double tmp = 0;
- for (int i = 0; i < limit; i++, ar_end++)
- {
- cout << "Enter value #" << (i + 1) << ": ";
- cin >> tmp;
- if (!cin)
- {
- cin.clear();
- while (cin.get()!='\n')
- {
- continue;
- }
- cout << "Bad input;input process terminated.\n";
- break;
- }
- else if (tmp < 0)
- {
- break;
- }
- *ar_end = tmp;
- }
- return --ar_end;
- }
- void show_array(double ar[], const double *ar_end)
- {
- double *pt = ar;
- for (int i = 0; pt <= ar_end; pt++, i++)
- {
- cout << "Property #" << (i + 1) << ": $";
- cout << *pt << endl;
- }
- }
- void revalue(double r, double *ar, double *ar_end)
- {
- double *pt = ar;
- for (; pt <= ar_end ; pt++)
- {
- *pt *= r;
- }
- }
- void test7_7()
- {
- double properties[Max];
- double *ar_end = NULL;
- ar_end = full_array(properties, Max);
- show_array(properties,ar_end);
- if (ar_end - properties > 0)
- {
- cout << "Enter revaluation factor: ";
- double factor;
- while (!(cin >> factor))
- {
- cin.clear();
- while (cin.get()!= '\n')
- {
- continue;
- }
- cout << "Bad input. input process terminated.";
- }
- revalue(factor, properties, ar_end);
- show_array(properties, ar_end);
- }
- cout << "Done.\n";
- cin.get();
- cin.get();
- }
- /************************************************************************/
- /* 8 */
- /************************************************************************/
- const int Seasons = 4;
- const char * Snames[Seasons] = { "Spring", "Summer", "Fall", "Winter" };
- void fill(double expenses[], int Seasons)
- {
- for (int i = 0; i < Seasons; i++)
- {
- cout << "Enter " << Snames[i] << " expense: ";
- cin >> expenses[i];
- }
- }
- void show(double expense[], int Seasons)
- {
- double total = 0;
- cout << "EXPENSE\n";
- for (int i = 0; i < Seasons; i++)
- {
- cout << Snames[i] << ": $" << expense[i] << endl;
- total += expense[i];
- }
- cout << "Total Expense: $" << total << endl;
- }
- void test7_8()
- {
- double expense[Seasons] = { 0 };
- fill(expense, Seasons);
- show(expense, Seasons);
- }
- /************************************************************************/
- /* 9 */
- /************************************************************************/
- const int Size = 30;
- typedef struct Student{
- char fullname[Size];
- char hobby[Size];
- int ooplevel;
- }student;
- int getInfo(student pa[], int n)
- {
- int i = 0;
- for (i = 0; i < n; i++)
- {
- cout << "Student #" << i + 1 << ":\n";
- cout << "Enter name: ";
- cin >> pa[i].fullname;
- if (!cin)
- {
- cin.clear();
- while (cin.get()!= '\n')
- {
- continue;
- }
- cout << "bad input. input process terminated.\n";
- }
- cout << "Enter hobby:";
- cin >> pa[i].hobby;
- cout << "Enter ooplevel:";
- cin >> pa[i].ooplevel;
- }
- return i;
- }
- void display1(student st)
- {
- cout << "Student info:\n";
- cout << "name: " << st.fullname << endl;
- cout << "hobby: " << st.hobby << endl;
- cout << "ooplevel" << st.ooplevel << endl;
- }
- void display2(student *ps)
- {
- cout << "Student info:\n";
- cout << "name: " << ps->fullname << endl;
- cout << "hobby: " << ps->hobby << endl;
- cout << "ooplevel" << ps->ooplevel << endl;
- }
- void display3(const student pa[], int n)
- {
- int i = 0;
- for (; i < n; i++)
- {
- cout << "Student #" << i + 1<< "info:"<< endl;
- cout << "name: " << pa[i].fullname << endl;
- cout << "hobby: " << pa[i].hobby << endl;
- cout << "ooplevel" << (pa+i)->ooplevel << endl;
- }
- }
- void test7_9()
- {
- cout << "Enter class size: ";
- int class_size;
- cin >> class_size;
- while (cin.get()!= '\n')
- {
- continue;
- }
- student *ptr_stu = new student[class_size];
- int entered = getInfo(ptr_stu, class_size);
- for (int i = 0; i < entered; i++)
- {
- display1(ptr_stu[i]);
- display2(ptr_stu + i);
- }
- display3(ptr_stu, entered);
- delete [] ptr_stu;
- cout << "Done.\n";
- }
- double add(double x, double y)
- {
- return x + y;
- }
- double sub(double x, double y)
- {
- return x - y;
- }
- double mul(double x, double y)
- {
- return x*y;
- }
- void test7_10()
- {
- double(*calculate[3])(double, double);
- calculate[0] = add;
- calculate[1] = sub;
- calculate[2] = mul;
- for (int i = 0; i < 3; i++)
- {
- cout << calculate[i] << ": "<<calculate[i](5, 2) << endl;
- }
- }
- int main()
- {
- test7_10();
- system("pause");
- return 0;
- }
C++ Primer Pluse_7_课后题的更多相关文章
- C++ Primer Pluse_8_课后题
#include <iostream> #include <string> #include<cstring> using namespace std; void ...
- C++ Primer Pluse_6_课后题
#include <iostream> #include <cctype> #include <array> #include <string> #in ...
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
- 算法(JAVA)----两道小小课后题
LZ最近翻了翻JAVA版的数据结构与算法,无聊之下将书中的课后题一一给做了一遍,在此给出书中课后题的答案(非标准答案,是LZ的答案,猿友们可以贡献出自己更快的算法). 1.编写一个程序解决选择问题.令 ...
- 课后题2.87&2.86
课后题2.86&2.87 单纯就是想加点分第十章的题目都被做过了就做下第二章的,正好复习一下前面学的知识,第二章给我剩下的题目也不多了,我就挑了这个题目. 2.86 考虑一个基于IEEE浮点格 ...
- c++面向对象程序设计 课后题 答案 谭浩强 第四章
c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...
随机推荐
- JSP 中 pageEncoding 和 charset 区别以及中文乱码解决方案
一.JSP 中 pageEndcodeing 和 charset 的作用 <%@ page contentType="text/html;charset=GB2312"%&g ...
- sqlSQL2008如何创建定时作业
SQL2008如何创建定时作业?此方法也适应于Sql Server2005数据库,有兴趣的可以来看下! 1.打开[SQL Server Management Studio],在[对象资源管理器]列表中 ...
- 【Linux程序设计】之进程间的通信
这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的. 实验题目:Linux环境下的进程间通信 实验目的:熟悉进程通信中信号概念及信号处理:掌握进程间的管道通信编程 ...
- ccc 多点触控2
经过不断的思考发现,如果是两个sprite都添加触控的时候,往往直接成单点触控, 但是如果是两个node的时候在node上面点击就会变成多点触控的形式 cc.Class({ extends: cc.C ...
- 【转】敏捷开发 Scrum 总结
转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...
- 一些有用的HTML5 pattern属性
最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了.于是想要尝试其它的实现方案,最 ...
- 使用Adobe Edge Inspect在各种设备中轻松测试同一页面
有过移动网站开发经历的开发者都知道,在各种设备中测试同一页面是一项非常繁琐的工作.现在,我们可以使用Adobe Edge Inspect来简化这一工作.如果使用Edge Inspect,可以在各种设备 ...
- NOIp 2014 #5 解方程 Label:数论?
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- 转:jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- 10秒钟安装 Vim编辑器,5分钟浏览常用命令 2015.10.25
首先我想说,vim与vi的命令几乎相同,,所以学习编辑命令时很轻松,排除扩展相关,以及自动补全等配置的使用在外30秒钟安装 Vim编辑器,5分钟浏览常用命令环境:虚拟机Ubuntu:安装vim并浏览命 ...