博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Practise--《C++ primer plus》习题程序编写
阅读量:5892 次
发布时间:2019-06-19

本文共 2996 字,大约阅读时间需要 9 分钟。

《C++ primer plus》第七章8、9题,编程格式思路纯属个人喜好:

8. 

#include 
using namespace std;const int SLEN = 30;struct student { char fullname[SLEN]; char hobby[SLEN]; int opplevel;};int getinfo ( student pa[ ], int n );void display1 ( student st );void display2 ( const student * ps );void display3 ( const student pa[ ], int n );int main(){ 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"; return 0;}int getinfo( student pa[], int n ){ int count = 0; for (int i = 0; i < n; i++) { cout << "Please input student's name: "; cin.getline( pa[i].fullname, SLEN ); if ( strlen(pa[i].fullname) != 0 ) //判断是否为空行 { count += 1; cout << "Please input student's hobby: "; cin.getline( pa[i].hobby, SLEN ); cout << "Please input student's ooplevel: "; cin >> pa[i].opplevel; while ( cin.get() != '\n' ) continue; } else break; } cout << "In fact we have " << count << " students.\n" << endl; return count;}void display1( student st ){ cout << st.fullname << '\t' << st.hobby << '\t' << st.opplevel <
fullname << '\t' << ps->hobby << '\t' << ps->opplevel << endl;}void display3( const student pa[ ], int n ){ for (int i = 0; i < n; i++ ) { cout << pa[i].fullname << '\t' << pa[i].hobby << '\t' << pa[i].opplevel << endl; }}

9.

(1) 这里是让用户输入两个数计算或者按q退出:

#include 
using namespace std;double add( double x, double y ){ return x + y;}double calculate ( double x, double y, double (*f)( double , double ) ){ return f( x, y );}int main( ){ double x, y; cout << "Please input two numbers or end by q: "; while( (cin >> x >> y ) ) {
double result = calculate ( x, y, add ); cout << "Result is " << result << endl; cout << "Please input two numbers or end by q: "; } return 0;}

(2) 用了一个指向函数的指针数组:

#include 
using namespace std;double add( double x, double y ){ return x + y;}double mlu( double x, double y ){ return x * y;}double calculate ( double x, double y, double (*f)( double , double ) ){ return f( x, y );}int main( ){ double x, y; double (*pf[2]) ( double, double ) = {add, mlu}; char * cp[2] = {
"add", "mlu"}; cout << "Please input two numbers or end by q: "; while( (cin >> x >> y ) ) { for (int i = 0; i < 2; i++ ) cout << cp[i] << " = " << calculate( x, y, pf[i] ) << endl; cout << "Please input two numbers or end by q: "; } return 0;}

转载于:https://www.cnblogs.com/heyuheitong/archive/2012/11/20/2779731.html

你可能感兴趣的文章
内部排序
查看>>
jQuery EasyUI API 中文文档 - 组合(Combo)
查看>>
10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
查看>>
Oracle体系结构
查看>>
用Modelsim仿真QII FFT IP核的时候出现的Error: Illegal target for defparam
查看>>
javascript Error对象详解
查看>>
nc 局域网聊天+文件传输(netcat)
查看>>
每天一个linux命令(25):linux文件属性详解
查看>>
go微服务框架go-micro深度学习(三) Registry服务的注册和发现
查看>>
python 重载方法有哪些特点 - 老王python - 博客园
查看>>
在Fedora8上安装MySQL5.0.45的过程
查看>>
设计模式之命令模式
查看>>
android 测试 mondey
查看>>
Spring AOP项目应用——方法入参校验 & 日志横切
查看>>
使用REST-Assured对API接口进行自动化测试
查看>>
王潮歌跨界指导HUAWEI P20系列发布会 颠覆传统 眼界大开!
查看>>
王高飞:微博已收购一直播 明年一季度重点是功能与流量打通
查看>>
趣头条发行区间7至9美元 预计9月14日美国上市
查看>>
新北市长侯友宜:两岸交流应从隔壁最亲近的人开始
查看>>
全面屏的Nokia X即将上线,不到2000元的信仰你要充值吗?
查看>>