c++编程遇到的问题问题

当前位置: >
> C++编程-从问题分析到程序设计 PDF扫描版[16MB]
C++编程-从问题分析到程序设计 PDF扫描版[16MB]
C++编程-从问题分析到程序设计
书籍大小:16.67MB
软件语言:简体中文
书籍类型:
书籍授权:免费软件
更新时间:
书籍类别:C/C++/C#
购买链接:&&
应用平台:
网友评分:
内容介绍热点排行下载地址相关内容
本书为C#经典名著!是Wrox红皮书中最畅销的品种之一。从第1版开始就名满天下,其第3版被评选为2005年最权威的十大IT图书之一,并荣获“2005年度引进版科技类优秀图书”奖。本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各Objective-C是扩展C的面向对象编程语言,也是iPhone开发用到的主要语言。本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材,由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设&清华大学出版社最新推出《C#高级编程(第6版)》,红皮书系列经典之作!
1.C#经典名著!是Wrox红皮书中最畅销的品种之一&
2.第3版被评选为2005年最权威的C#高级编程是一本很强悍的工具书,知识全深入,权威,值得购买本书针对C++初学者,从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有较多C语言方面的背景知识本书系统地介绍了在linux平台下用c语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在linux平台下进行c语言程序开发的方法和技巧,并谭浩强 C语言程序设计(第二版) pdf,学习C语言入门书籍。数据结构基础(C语言版)(第2版)
C++编程-从问题分析到程序设计 PDF扫描版[16MB]
CopyRight &
JB51.Net , All Rights Reserved21:04 提问
C++编程题,书本题目不会解
编写一个程序,处理5个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求从键盘输入学生的数据,并输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数),并输出平均分在前3名的学生的姓名及平均分。
调试处理5个学生信息的程序,输出平均分在前3名的学生的姓名及平均分。
有一个参考程序,但是我不知道要怎样输入数据。。。。。。
处理5个学生的信息的参考程序:
//sy7_1.cpp
#include "iostream"
struct STU
char name[20];
int score[3];
} students[5];
void main()
for(i=0; i & 5; i++)
cin&&students[i].
cin&&students[i].
students[i].average = 0;
for(j=0; j& 3; j++)
cin&&students[i].score[j];
students[i].average += students[i].score[j];
students[i].average /= 3;
for(i=0; i & 5; i++)
for(j=i+1; j& 4; j++)
if(students[j].average & students[j+1].average)
t = students[j].
students[j].average = students[j+1].
students[j+1].average =
cout&&"输出平均分在前3名的学生的姓名及平均分:"&&
for(i=0; i & 3; i++)
cout&&students[i].name&&"
"&&students[i].average&&
求各位解答!!!!
按赞数排序
个人觉得这个代码有问题,具体详见
,对于cin输入的输入原理可参考相关资料
1900关注|938收录
其他相似问题C++ 如何进阶?
本人有C基础。C++语法知识学过一遍,现在不知道如何进阶学习,提高能力。是要继续看书?自己创造项目?参加开源项目?
按投票排序
这是我为琪石职业发展俱乐部()写的文章,主要针对在美国金融业需要C++的Quant或developer职位写的指南,再发一次,希望有所帮助。1.C++的用途和意义总体来说,C++作为一门软件开发语言,它的流行度是在减少的。主要原因在于语言的复杂和灵活导致软件开发成本提高,这体现在开发周期和人力上。它不适用于startup公司的快速开发,也不适合用于普通的对性能要求不高的软件系统中。C++的优势体现在语言的灵活和对底层的控制,比如内存分配和释放,和其他硬件的交互能力上,这导致在对性能要求高的系统中它能够体现价值,在金融业常用于两类系统,衍生品定价系统(包括风险控制的计算系统),以及低延迟交易系统。这也是为什么金融行业对Quant常常要求C++的原因。因为C++用途的局限,一般建议程序员应多学一些其他语言,如Python, JavaScript, R, Java, Scala等。2. C++入门C++入门最推荐的书是C++ Primer (注意,不是C++ Primer Plus) ,或者The C++ Programming Language,二者选一即可。读之前最好已经有一点编程的基础,不管什么语言。这些书内容很多,应该侧重于理解概念,而非单纯记忆。重要的概念理解后自然会记住,一些不是很重要的概念一时记不住也没有关系。C++的概念和规则很多,就算是有经验的C++程序员有时也需要google一些语言规则。在这个阶段应该掌握重要的概念。这一阶段以后可以思考下面这些问题。Difference between pointer and reference?i++, ++i, which one is better?Why use virtual destructor?What is the signature of a copy constructor/ assignment operator?How to specialize a class template?What are the four types of casts in C++? Usage?etc.3. 算法和数据结构对C++来说,首先要了解Standard Template Library中提供的数据结构的复杂度以及常见的实现。了解各种算法,可以参考算法导论CLRS前17章,Cracking coding interview等书,这些书所采用的语言并不重要,主要是了解算法。Leetcode的easy和median难度的题目可以用来练习。可以思考的问题有:What does reserve() do on std::vector? What is the complexity of adding element to a std::vector?Underlying data structure of std::map/std::unordered_map? Implementation outline.K-way merge sort.How would you implement atoi and itoa functions?Max sum subarray problem.How to compute max drawdown of a price time series?4. C++进阶可以阅读Effective C++, Effective STL, C++ FAQ(website) 和一定编程规模(数千行代码量)的project。只有在Project中才能真正学习。C++ standard library 的实现也是很好的学习工具。它有几个不同的实现,GCC, SGI, Clang等。Clang的实现比较清晰,如果用GCC作为编译器的话了解GCC的实现对有效使用library中的container是很有好处的。对于Quant来说不一定要掌握到这个部分所提到的内容,有兴趣的话可以学习。这个阶段以后可以思考下面这些问题。What is strong exception guarantee? Cost of exception handling? Why C++11 deprecate exception specification?What is type trait?What is smart pointer? Difference between std::shared_ptr&T& and boost::instrusive_ptr&T&? Implementation outline. How is virtual function call implemented? What is the cost of virtual function calls? *What is CRTP? *What is the limitation of that?*What is the runtime cost of a lambda function? *What is the cost of std::function compare to a function pointer? *What does std::function gain from that cost?注1:带*号为难度较大的问题,Quant或初学者可以不在这上面浪费时间注2:本文所提的思考问题仅是一些有代表性的问题,仅代表C++知识的一小部分。5. C++11C++ Primer第五版已经涉及,另外还有Effective Modern C++. C++11很重要,有很多改进需要了解和掌握,在程序中善于使用。这里举一些比较有代表性的, move sematic, rvalue reference, range based for loop, override keyword, static assert,
initializer list, lambda, etc. Boost library的最常用内容已经包含在C++11中,建议先掌握C++11再关注Boost的其他内容。6. 软件开发环境Version control. Git是主流,在老的开发组里可能还在使用SVN或者CVS。这是团队开发必须掌握的工具。Testing. production code的设计要考虑到其可测试性,所有的代码在release之前都要经过测试。测试的设计,自动化等工作也是需要功夫的。Build system. 常见的C++ build system有Make, CMake, Automake, scons, Visual Studio等,至少会使用一种。了解Gcc的使用,了解如何使用第三方库。Debugging/Profiling tool: Valgrind memcheck, Cachegrind, gprof, OProfile, etc. 7.行业相关:衍生品定价系统这样的系统以计算为核心,需要数值计算,并行计算的知识。现在GPU也比较流行,一般使用nVidia的CUDA. 并行计算也有使用MPI的。另外系统的跨平台特性和其他系统和语言的接口也是开发的要点之一。8.行业相关:低延迟交易系统交易系统注重对底层的了解。Memory alignment, multithreading, networking communication, cache friendliness, 如何保证系统的高可靠性,这些都是值得注意和学习的地方。建议学习SEC对Knight Capital trading error事件的调查报告, 以及SEC对Tower Research RegNMS violation的调查报告. 以及知乎大神董可人的文章 和
C++需要不断地练习——by
语法已经学完了的话,下面就自己多写吧。可以先写一些GUI程序练习,再往后练习更多偏系统编程层面的。C++主要的应用场景还是在需要高性能的系统编程,因此进阶的另一部分就是加深对计算机系统组成结构的理解。
如果你真的想要C++进阶Modern C++ Design不过我的建议是等几年再学C++吧.....
抓紧时间看点有用的东西。内核啊,TCP/IP 啊。Cocoa,Win32,OpenGL 啊。编译器啊(ANTLR)。虚拟机啊(Lua,Python)。C++ 可以抽空看看《The Design and Evolution of C++》,别整什么「进阶」这种没用的东西。
该看的书有人给你推荐了。实践才是王道,有功夫你试着把你熟悉的用C写的程序用C++改写一段,从这几个方面来反问一下自己:1. 运算性能有何变化;可以编写一个小程序来测测,或者用其他性能检测工具判断一下。2. 复杂度有无增加?例如原来通过全局函数、变量处理的事情现在都放到类中,有何工作量的增加?3. 程序阅读和维护起来是否方便了。不要觉着C++就一定能增加可维护性,阅读起来更爽,你写不顺流照样让你自己晕菜。接下来,你思考一下虚函数在编译器内部做了哪些动作,它让程序的动态和静态加载执行会对系统带来哪些影响?为啥需要模板?什么样的模板可以被收纳进STL这样的优质库?如果为你自己的公司或项目做一套值得称为模板的东西,你的程序里需要有哪些考核点?等你对这些问题有了深刻和实践的体会,我相信,至少您的C++水平可以参与干大一点的项目了。先写这么多,明儿接着聊。
精通C++和超光速一样,目前是个伪命题
点击看大图这幅图的英文原作的出处有谁知道么 国内的译者也查不到了Update:感谢@御宅暴君 指出原图出处
确定是C++进阶?个人感觉可以先深入了解下STL,《STL源码剖析》;再看《Effective C++》,《More effective C++》;然后是boost库的源码,应该够了。
已有帐号?
无法登录?
社交帐号登录c++中常见问题
c++中常见问题
1、c++变量初始化规则
内置类型变量是否初始化决定于变量的定义位置,在函数体外定义的变量都自动初始化为0,函数体内定义的变量都不进行自动初始化。类类型变量的初始化,类通过定义一个或多个构造函数来控制类对对象的初始化,如果定义某个类的变量时没有提供初始化式,这个类就通过默认构造函数来实现。
2、引用(reference)与指针(pointer)
引用就是对象的另一个名字,通过在变量前添加&符号来定义。定义时必须初始化:
int& ival=1024;
int &refval= ival;//OK:refval refers to ival
int &refval;//error:a reference must be initialized
int &refval=1024;//error:initializer must be an object
作用在引用上的操作与作用在对象上的操作完全等价,当引用初始化后,只要改引用存在就绑定到初始化时指向的对象,不可更改。
const reference是指向const对象的引用,利用该引用可以读取但不可以修改其所指向的对象,普通引用不能指向const对象。
指针用于指向对象,其值是所指向对象在内从中的地址,通过在变量前加*来定义:
string *pstr,ppstr;//pstr is a pointer to string,ppstr is a string
用指针操作内存容易发生越界错误,故定义指针后建议立即进行初始化,对指针的初始化或者赋值仅能使用以下的四种类型值:0值常量表达式;类型匹配对象的地址;同一对象的下一地址;同类型的另一有效指针。 c++提供了一种特殊的指针void*,它可以保存任何类型对象的地址。
3、指针和const限定符
指向const对象的指针,定义是不需要进行初始化,通过改指针可以反问但不可以修改该对象。const对象必须使用const类型指针去指向。
const double pi=3.1415926;
const double *ptr=π//ptr is a pointer to a const
const指针是一种常量,本身值不能修改,定义时必须进行初始化,eg:
double pi = 3.1415926;
double *const prt=π//ptr is a const pointer
指向const对象的const指针这种类型的指针本身值不能改变,通过它也只能访问所指对象不能修改对象的值。eg:
const double pi=3.1415926;
const double *const ptr=π//ptr is a const pointer to a const object
4、指针和typedef
借用一个例子来说明这个问题,eg:
typedef string *pstring;
const pstring cstr;
大多说人会认为cstr是个const string*(原式等价于 const string *cstr)类型,但这是错误的,原因在于将typedef当成了文本扩展。申明const pstring时,const修饰的是pstring类型,这是一个指针,所以应该将其理解为cstr定义为指向string类型的一个const指针,等价于:string *
5、c++中的特殊数据类型
string的长度string::size_type
中元素的个数vector::size_type
数组中元素个数:size_t
两个指针之间的距离度量:ptrdiff_t
5、多维数组
多维数组其实质就是数组中的数组,eg:
int ia[3][4];//arry of size3,eachelement is an arry of ints of size 4
int (*ip)[4] =//ip points to an arry of 4 ints
int *ip[4];// arry of pointer to int
6、c++中的p++与++p的效率问题
我们在c++中一般使用前置操作符,因为前置操作效率更高,仅需加1后返回加1的结构即可;而后置操作符必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。
*beg++;等价于*beg;++beg;
7、函数参数问题
const形参可以避免复制操作
当数组作为函数参数时,编译器只会检查实参是否是指针,指针的类型是否与形参形参匹配,而不检查数组长度。在传递数组时,实参是指向数组第一个元素的指针,形参复制的是这个指针的值。
通过引用传递数组时,实参要求与形参类型大小完全匹配。
二维数组做参数:void printArray(int(arr*)[10],int rowSize);
8、函数指针
返回指向函数的指针,eg:int (*ff(int))(int*,int);解释如下:ff是一个带有int型的函数,该函数返回指向函数的指针,该指针指向的函数类型是int(*) (int*,int);即所指向的函数返回int型,并带有两个形参。使用typedef定义更加简明易懂:
typedef int(*PF)(int*,int);
PF ff(int);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 编程遇到的问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信