博文

钱能的《C++程序设计教程》序列六:chapter6(2005-08-03 17:37:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处, 欢迎大家批评指正。 这一序列说明: 1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999 2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能 达到非常熟练,或者我初学时感觉比较模糊的知识。 3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以 后这里的答案简称“网络版” 4.更多的学习和改进将在《The C++ programming language》答案序列中体现。 序列六:chapter6 一、疑难知识点: 1.弄懂extern和static存储类型: (1)extern:修饰全局变量              默认修饰函数,一般省略 (2)static:修饰局部变量              修饰全局变量,这时变量只在其原文件内有效              修饰函数,函数只在其原文件中有效,也就是改变了默认extern函数特性 (3)在文件作用域下,inline函数默认是static型(不是extern),const常量默认为static型,当然可以 加extern来改变这种默认类型。 2.掌握一个由多个文件构成的程序该如何编写,包括包含头文件。见习题6.3 3.注意各类局部作用域,特别是if——else,switch,for等。书上p107的for作用域的例子有错误。 二、课后习题 6.1来自网络版加上一点自己,主要是不想打程序 (1) //file1.cpp int x=1; int func() {   //... } //file2.cpp extern int x; int func(); void g() { &......

阅读全文(5766) | 评论:0

钱能的《C++程序设计教程》序列五:chapter5第二部分(2005-08-03 15:02:00)

摘要:二、课后习题 5.4这道题出得很不错,考察了很多知识点,只要有一点细节你没有注意就可能出现错误。 主要注意点: (1)数值调用是不改变值 (2)全局变量在任何一个函数内都会改变它的值 (3)静态变量只初始化一次(在函数调用时只在第一次赋值) 答案: Main--x=5,y=1,n=1 Func--x=6,y=21,n=11 Main--x=5,y=1,n=11 Func--x=8,y=31,n=21 5.5 #include<iostream> using namespace std; int fib(int n);//函数声明 void main() {     int n;     cout<<"Input an integer:";     cin>>n;     cout<<"第n项的值是:"<<fib(n)<<endl; } int fib(int n) {     int i,a=1,b=1,c=1;     for(i=3;i<=n;i++)     {         c=a+b;         a=b;         b=c;     }     return c; } 5.6 #include<iostream> using namespace std; double p(int n, double x)//函数声明和定义一起 {   if(n==0)     re......

阅读全文(3591) | 评论:0

2005年8月1日 第30期电脑报 编程点将(2005-08-03 02:33:00)

摘要:上周回家,那期的电脑报至今没有弄到,里面的编程点将就没有做了 题目: 一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少 这题是我的C语言程序百例里面第22题,大家可以对比学习。 我的答案: /*程序思想: 可以用假设两个小时的行程从1递增,当满足里程表的度数对称时停止。 按常识,两个小时后不可能使现在的里程表的度数由现在的5位数变成6位数。 故这时里程表新的值若满足个位==万位(也就是9),十位==千位就可以了。 程序在vc++6.0运行通过,结果是: 该车的速度为:50 新的对称数是:95959 */ #include<iostream> using namespace std; void main() {     int i,a,b,c,d;     for(i=1;;i++)     {         a=95859+i;         b=a%10;//取得个位         c=(a%100)/10;//取得十位         d=(a/1000)%10;//取得千位         if(b==9&&c==d)break;//个位等于9也就是万位,十位和千位相等那么这时就是对称了     }     cout<<"该车的速度为:"<<i/2<<"\n新的对称数是:"<<a......

阅读全文(4369) | 评论:0

钱能的《C++程序设计教程》序列五:chapter5第一部分(2005-08-03 02:59:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处, 欢迎大家批评指正。 这一序列说明: 1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999 2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能 达到非常熟练,或者我初学时感觉比较模糊的知识。 3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以 后这里的答案简称“网络版” 4.更多的学习和改进将在《The C++ programming language》答案序列中体现。 序列五:chapter5 一、疑难知识点: 1.函数概述: (1)区分函数定义和函数声明(其实就是函数原型) (2)函数定义不允许嵌套 (3)若函数定义和函数声明不一致,也就是参数类型不一致,则可以正常编译但会出现错误链接。若是返回 类型或者参数个数不一样,则会误认为是重载,这时返回类型不一样的是错的,另一个重载若都提供了各自 的函数定义则是正确的。当然,没有被调用的函数可以只有声明没有定义。 (4)函数没有返回类型在新的标准下是错的,不过我载VC++6.0上面竟然可以通过^_^ (5)无返回的函数也可以使用return,但不能返回值 (6)内联函数用inline声明,定义时可以省略inline。反之也可以只在定义时放inline,而声明时没有,但 是这时其实已经变成普通的函数了而不是inline函数。 2.注意分清代码、各类变量、常量等在内存中的存储区域 3.局部变量的类型修饰是auto,习惯上省略 4.全局变量定义前的所以函数定义不知道该变量。由此,全局变量的定义位置也是比较重要的。 5.在p94有这么一句话:C++允许int到long,int到double的转换。当实参是整数而重载函数一为long型参数 ,一为double参数时应该给以一个显式转化。我原来觉得在这种情况下应该时调用long参数的函数,因为说 到底long也是int。我在vc++6.0上试验结果就是这样. 例子: int aa(long); int bb(double); void main() {     int b=6;   ......

阅读全文(4054) | 评论:0

给大学生的八十六条金玉良言 [精](来自新浪)(2005-09-11 00:07:00)

摘要:主题:给大学生的八十六条金玉良言 [精]来自新浪给大学生的忠告,不是真理,但是足够你用四年 一,别以为在学生会你能得到你曾经想要的。工作的热情很可能因为你所看到的所经历的一些事而改变,但是也不必惧怕。你有大一一年来适应或者承受,并做出是继续坚持还是退出的决定。 二,大学可能有真实的爱情,但是记住只是可能。很多时候他们是因为别人都谈恋爱而羡慕或者别的原因而在一起。所以,不必为任何分手而受太大的伤,记住,太大的伤,真爱,还是值得追求的。  三,如果你的家庭一般的话,那么记得你在大学有很多意外用钱的地方。比如二专业或者将来的各种班,为了你的家人和你自己的前途,永远别乱花钱。记住,永远。 四,朋友,你大学的朋友很可能就是你将来事业的一部分。他们会帮助你。但是你也应该让自己有帮助他们的实力,所以,你要努力,你和你的朋友会一起在将来打造一个可能很辉煌的事业。很好听是吗?但是记住,你们都要努力。 五,很多事情当你再回忆时会发现其实没什么。所以,不管你当时多么生气愤怒或者别的,都告诉自己不必这样,你会发现其实真的不必。 六,学习,永远别忘记她。不管别人怎么说大学是个提高综合能力的地方云云,如果你学习失败了,你就什么也不是——不排除意外,但你考虑好了吗?你会是那个意外吗?? 七,别说脏话,你应该知道习惯的力量。找工作或者和别人接触时,你随便的一个字或者几个字会让你在别人心中的形象大打折扣。 八,好好利用在公共场合说话的机会,展示或者锻炼,都可以。 九,别为你自己和别人下定论,无比重要。你所看到听到的可能只是一面,为这个失去可能的朋友,很不值。 十,如果你发现很久了你一直是一个人去食堂吃饭或者去上自习,别在意,大学里一个人是正常的,你觉得孤独?你的朋友是怕你觉得你没有自由的空间,所以别以为你没有朋友。 十一,很多事情别人通知你了,要说谢谢,没有通知你,不要责怪,因为那些事你其实应该自己弄清楚。 十二,"我请你吃饭"之类的话不要乱说,因为所有人都会当真,不管你自己怎么想,大学里请人吃饭是很平常的事,几乎连请一个自己不怎么认识的人吃饭都很正常. 十三,尊严是最重要的,但是在大学里,要懂得利用这个空间锻炼自己,要让自己的尊严有足够大的承受力,要知道,社会是一个最喜欢打碎人的尊严的地方,除了你自己,没人会为你保留它. 十四,大学是亚社会.对,所以,当你上了高年级后,要让自己有大人的形象,大一的......

阅读全文(7524) | 评论:14

大学BBS十大经典搞笑签名(来自新浪)(2005-07-23 00:00:00)

摘要:大学BBS十大经典搞笑签名 来自新浪 作者:淘气太郎007  发表日期:2005-07-22 10:45:29   希望大家开开心心 no1:大学这四年里,我一直认为自己是个人才,可是我错了,我不是!我tmd竟然是一个天才!!! no2:1949年9月28日,我被捕了。第一天,敌人严刑拷打我,我没招。第二天,敌人用辣椒水泼我,我还是没招。第三天,敌人用美人计,我招了。第四天,我还想招,可tmd的解放了! no3:俺用筷子把刚刚打的米饭里的一根“头发”高高举在食堂窗口,看着食堂师傅脸上青一阵白一阵那狼狈样,俺心里一阵狂得意:嘿,今儿中午吃饭又可以不花钱了。旁边盛菜的小伙抬头看见了,一拍大师傅的肩膀:“老刘,刚才小便又没洗手?” no4:我把硬币抛向空中——如果正面朝上,就上bbs ;如果背面朝上,就上qq ;如果硬币立起来,我就去自习~ no5:你:每个女孩都曾是无泪的天使,当遇到自己喜欢的男孩时,便会流泪——于是坠落凡间,变为女孩。所以男孩一定不要辜负女孩,因为女孩为你放弃了整个天堂! 我:虽然我不是把你从天使变成女孩的那个人,但希望我是把你从女孩变成女人的那个人~(汗ing) no6:一只狗去山里创业,农夫给了它一把镰刀,木匠给了它一把锤子。狗来到山里突然遇到一只老虎,吓得它赶忙把镰刀锤子举了起来,老虎见了哈哈大笑说:“哟,小样儿,还是个党员哩!” no7:我用心变成大树为你挡风遮雨,你却将它砍成一片片来生火;我用爱做成翅膀带你去天堂,你却用刚才的火把它做成了肯德鸡香辣鸡翅~ -_-! no8:a:“你到浙大来做什么?” b:“混。” a:“离开浙大后你想成为什么样的人?”b:“混混。” no9:说几万年后,一群考古系的学生在某大学遗址发现一块化石,但只能断定是雌性动物,遂问其教授这到底是哪个物种的化石,教授认真研究了一番,突然激动的泪流满面说:“同学们啊,这就是传说中的‘恐龙’啊!!!”(我倒~) no10:(电子科大)绝不让一个处女走出校园!!   ......

阅读全文(3278) | 评论:0

钱能的《C++程序设计教程》序列四:chapter4第四部分(2005-07-21 12:43:00)

摘要:因为字数限制,进行分割。 二、课后练习答案:(不抄题目,没有课本的人可以到网上去下一本) 4.09其实这三小题都是类似的,只是些许改动即可。因为我对第二章输出形式控制符不熟悉,因此直接打空格来对其显示。当然你可以使用setw()来显示空格。 (3) #include<iostream> using namespace std; void main() {     int i,j;     for(i=0;i<=9;i++)     {         if(i==1)cout<<"----------------------------------------------------\n";         for(j=0;j<=9;j++)         {             if(i==0&&j==0)cout<<"   *    ";             else if(i==0&&j)cout<<j<<"    ";             else if(j==0)cout<<"   "<<i&l......

阅读全文(3198) | 评论:0

钱能的《C++程序设计教程》序列四:chapter4第三部分(2005-07-21 12:42:00)

摘要:因为字数限制,进行分割。 二、课后练习答案:(不抄题目,没有课本的人可以到网上去下一本) 4.08其实这两小题都是类似的,只是些许改动即可。 (1) #include<iostream> using namespace std; void main() {     int i,j;     for(i=1;i<=19;i+=2)     {         for(j=1;j<=19-i;j++)//显示每一行前面的空白             cout<<" ";                  for(j=1;j<=i;j++)//显示#             cout<<"# ";         cout<<"\n\n";     } } (2) #include<iostream> using namespace std; void main() {     int i,j;     for(i=17;i>=10;i--)     {         for(j=1;j<=17-i;j++)//显示每......

阅读全文(3062) | 评论:0

钱能的《C++程序设计教程》序列四:chapter4第二部分(2005-07-21 12:41:00)

摘要:因为字数限制,进行分割。 二、课后练习答案:(不抄题目,没有课本的人可以到网上去下一本) 4.02 #include <iostream> using namespace std; void main() {   int i,temp1=1,temp2=0;   for(i=1;i<=15;i++)   {       temp1*=i;       temp2+=temp1;   }   cout<<"所求的值为:"<<temp2<<endl; } 4.03.这一题是求水仙花数 #include <iostream> using namespace std; void main() {   int i,a,b,c;   for(i=100;i<=999;i++)   {       a=i%10;//个位       b=(i/10)%10;//十位       c=i/100;//百位       if(a*a*a+b*b*b+c*c*c==i)cout<<i<<"是水仙花数\n";   } } 4.04这一题是求完数 #include <iostream> using namespace std; void main() {   int i,j,temp=0;   for(i=1;i<1000;i++)   {       for(j=1;j<=i......

阅读全文(3567) | 评论:0

钱能的《C++程序设计教程》序列四:chapter4第一部分(2005-07-21 12:41:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。 这一序列说明: 1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999 2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。 3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以后这里的答案简称“网络版” 4.更多的学习和改进将在《The C++ programming language》答案序列中体现。 序列四:chapter4 一、疑难知识点: 1.三种循环while,do-while,for的一些注意点 (1)文中提到,在这三种循环的判断语句中可以使用逗号语句。其实在C++中好像可以使用语句的地方大多都可以使用逗号语句(但是case里面的常量表达式不能使用逗号语句)。 但需要注意的是:在Java中是没有逗号语句的,在Java中唯一可以使用逗号表达式的是在for循环的第一和第三个语句(第二的判断语句不行哦)。 (2)do-while的do的循环块中可以是没有语句、一条语句或者是多条语句。没有语句和有多条语句时均不能省略{},若只有一跳语句则可以省略{} . 还应该注意while语句的后面要分号; 2.有关switch (1)case里面只能是常量表达式,但不能是逗号表达式(逗号表达式也可以得到常量) (2)switch和case里面只能是int型(当然也包括char、enum、bool) (3)当把case放在最后一个是不能省略冒号;,若不是在最后一句可以省略冒号 (4)注意default语句出现的位置对输出结果的影响 相关例子: #include<iostream> using namespace std; void main() {     const int  b=6;     int c=5;     int a;     cin>>a;    &n......

阅读全文(3957) | 评论:0