#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. 【Xcelsius】在PPT中嵌入水晶易表Xcelsius2008仪表盘

    如果您使用Xcelsius创建了动画图形,并将其保存为 Shockwave® 文件(.swf 文件扩展名).但是往往插入进去之后,会产生一些比较棘手的问题,比如ppt不会自动播放,错误等等.今天把这些 ...

  2. 【原】MAC显示隐藏文件夹命令

    显示隐藏文件夹 1. 显示:defaults write com.apple.finder AppleShowAllFiles -bool true 第一步:命令行执行上述命令:

  3. POJ 1681 (开关问题+高斯消元法)

    题目链接: http://poj.org/problem?id=1681 题目大意:一堆格子,或白或黄.每次可以把一个改变一个格子颜色,其上下左右四个格子颜色也改变.问最后使格子全部变黄,最少需要改变 ...

  4. ACM A problem is easy

    A problem is easy 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 When Teddy was a child , he was always th ...

  5. 优化特性(Attribute)性能

    通过这篇文章,不仅可以了解到Attribute的工作原理,还可以了解到GetcustomeAttribute是的内部执行流程.最后,你会看到,使用缓存机制可以极大的优化反射Attribute的性能. ...

  6. Codeforces Beta Round #35 (Div. 2) E. Parade(扫描线)

    题目链接 只要会做,周长并,这题肯定有思路. 有个小地方敲错了,细心啊,扫描线,有一段时间没写过了,还有注意排序的问题,很重要. #include <iostream> #include ...

  7. Flex 页面空白或Error #2032

    日前用flex.arcgis做了一个地图显示的页面,本机调试没题目,公布后放到用户办事器上(win2003,ie6)ie6显示页面空白,换搜狗浏览器显示Error #2032,只显示进度条,客户端用i ...

  8. DockerFile 参数详解

    Docker 指令: From --- ENV ---设置环境变量ENV App_DIR /appp Add 和 Copy 可以复制文件到容器里面 .区别 Add 可以写网络的链接地址 Add 支持解 ...

  9. 高性能分布式内存队列系统beanstalkd(转)

    beanstalkd一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook ...

  10. IO流,File类的测试........课堂加总结

    package liu0926; import java.io.File; import java.io.IOException; public class Text01 { public stati ...