#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_课后题的更多相关文章

  1. C++ Primer Pluse_8_课后题

    #include <iostream> #include <string> #include<cstring> using namespace std; void ...

  2. C++ Primer Pluse_6_课后题

    #include <iostream> #include <cctype> #include <array> #include <string> #in ...

  3. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  4. 算法(JAVA)----两道小小课后题

    LZ最近翻了翻JAVA版的数据结构与算法,无聊之下将书中的课后题一一给做了一遍,在此给出书中课后题的答案(非标准答案,是LZ的答案,猿友们可以贡献出自己更快的算法). 1.编写一个程序解决选择问题.令 ...

  5. 课后题2.87&2.86

    课后题2.86&2.87 单纯就是想加点分第十章的题目都被做过了就做下第二章的,正好复习一下前面学的知识,第二章给我剩下的题目也不多了,我就挑了这个题目. 2.86 考虑一个基于IEEE浮点格 ...

  6. c++面向对象程序设计 课后题 答案 谭浩强 第四章

    c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...

  7. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  8. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  9. Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解

    Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...

随机推荐

  1. Codeforces 660C Hard Process(尺取法)

    题目大概说给一个由01组成的序列,要求最多把k个0改成1使得连续的1的个数最多,输出一种方案. 和CF 676C相似. #include<cstdio> #include<algor ...

  2. ACM: HDU 1874 畅通工程续-Dijkstra算法

    HDU 1874 畅通工程续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Desc ...

  3. 洛谷 P1991 无线通讯网 Label:最小生成树 || 二分

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  4. 【BZOJ】2823: [AHOI2012]信号塔

    题意 给\(n\)个点,求一个能覆盖所有点的面积最小的圆.(\(n \le 50000\)) 分析 随机增量法 题解 理论上\(O(n^3)\)暴力,实际上加上随机化后期望是\(O(n)\)的. 算法 ...

  5. 必备:常用px,pt,em换算表(转)

    常用px,pt,em换算表 pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理 ...

  6. java 深入浅出工厂模式

    一.引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“ ...

  7. nodeType的返回

    <p id="one" title="one_one">one_one_one</p> 1.用getElementById var o ...

  8. Js特效--模仿滚动条(兼容IE8+,FF,Google)

    <html> <head> <style> *{margin:0px;padding:0px;} #box{width:200px;height:500px;pos ...

  9. Thinkphp框架感悟(二)

    这次主要分析一下I方法 /** * 获取输入参数 支持过滤和默认值 * 使用方法: * <code> * I('id',0); 获取id参数 自动判断get或者post * I('post ...

  10. 打开FileGeoDatabase中要素类

    private IFeatureClass OpenFileGdbFtCls(string fn) { IFeatureClass pftcls = null; IWorkspaceFactory w ...