博文

原创 C++流式输出输出的的格式控制(2009-03-01 11:05:00)

摘要:C++流式输出输出的的格式控制

    对于流数据的输入输出格式,C++提供了两种不同的控制方式,一种是使用ios_base类提供的setf、width等函数设置输入输出格式,另一种是通过重载的格式控制符“<<”、“>>”以及流格式控制对象进行设置。
    本文只介绍:用函数设置或者恢复格式
    大部分流的输入输出格式可以用setf函数来设置。该函数有两种重载形式。其但参数的setf原型为:
    fmtflage setf(fmtfalg flag)
    参数flag说明所要设置的格式,由ios_base给出,可取如下枚举常量:
    enum{
    left        =0x0001,    //在域中靠左输出
    right        =0x0002,    //在域中靠右输出
    internal    =0x0004,    //符号靠左数值靠右输出,中间默认以空格填充   
    dec            =0x0008,    //数值以十进制输出
    hex            =0x0010,    //以16进制输出
    oct ......

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

好的程序经理应该具备的条件(2009-02-16 20:09:00)

摘要: 好的程序经理应该具备以下几个条件: 一、技术水平是程序员队伍中的最高级别 每个程序员骨子里头都有一股傲气,如果你不能技压群雄,他们就不会听你指挥。一个技术水平较差的人被任命为程序经理真是个悲剧,就象一个略有权势的太监,表面上有人对他点头哈腰,背后却被人鄙视。 二、能做最多且最难的工作 程序经理编程要快且好。别人要干一天的活,他半天就能做完,这样才会有精力去搞管理。程序经理应负责系统分析、系统设计这类最难的开发工作,并指导不同水平的程序员把各自的工作做好。如果人手不够,程序经理要能同时干几个人的活。 三、有人格魅力 软件开发是智力创作过程,你不能指望仅通过执行规章制度来产生好的作品。很多软件公司的程序经理都不是管理专业出身的,他们也不可能为了搞好管理而成天玩弄心机。技术出色的程序经理一般少有心术不正的,所以管理的重点应是“以身作则”、“公正待人”。如果程序经理在上班时趴在桌上睡觉,其他程序员也会这样干。如果程序经理发现有两个程序员趴在机器旁睡觉,不能只对其中一个大声吼叫:“你一编程就想睡觉,看看人家,在睡觉时都想着编程。” 如果管理者没有人格魅力,就没有人信服你,团队就不会有凝聚力,乌合之众不可能开发出优秀的软件。 结论:一个有活力的软件公司的各级经理都不会这样感叹,“因为我啥也不会干,所以只好当领导。” ......

阅读全文(1728) | 评论:1

聪明人的标准(2009-02-16 20:07:00)

摘要:聪明人一定反应敏捷,善于接受新事物。他能迅速进入一个新领域,给你一个头头是道的解释。他提出的问题往往一针见血、击中要害。他能及时掌握所学知识,并且博闻强记,他能把本来认为互不相干的领域联系在一起使问题得到解决。他富有创新精神与合作精神……......

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

白龙马与小毛驴(2009-02-16 20:05:00)

摘要: 唐太宗贞观年间,长安城西的一家磨房里,有一匹马和一头驴子。他们是好朋友,马在外边拉东西,驴子在屋里推磨。贞观三年,这匹马被玄奘大师选中,出发经西域前往印度取经。 17年后,这匹马驮着佛经回到长安。他重到磨房会见驴子朋友。老马谈起这次旅途的经历:浩瀚无边的沙漠,高入云霄的山岭,凌峰的冰雪,热海的波澜......那些神话般的境界,使驴子听的万分惊异。驴子惊叹道:“你有那么丰富的见闻啊!那么遥远的路途,我连想都不敢想。” “其实,”老马说,“我们跨过的距离是大体相等的,当我向西域前进的时候,你一部也没停止。不同的是,我同玄奘大师有一个遥远的目标,按照始终如一的方向前进,所以我们打开了一个广阔的世界。而你被蒙住了眼睛,一生就围着磨盘打转,所以永远也走不出这篇狭隘的天地。” ......

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

【原创】PKU1331解题报告(源代码)(2009-01-17 14:02:00)

摘要:PKU1331代码

题意:6*9 = 42" is not true for base 10, but is true for base 13. That is, 6(13) * 9(13) = 42(13) because 42(13) = 4 * 

131 + 2 * 130 = 54(10).

You are to write a program which inputs three integers p, q, and r and determines the base B (2<=B<=16) for which p * q 

= r. If there are many candidates for B, output the smallest one. For example, let p = 11, q = 11, and r = 121. Then we 

have 11(3) * 11(3) = 121(3) because 11(3) = 1 * 31 + 1 * ......

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

求全排列问题的算法(2008-11-14 18:19:00)

摘要://全排列问题
/*
    设R={r1,r2,...rn}是要进行排列的n个元素.Ri=R-{ri}.集合X中元素的全排列记为
    Perm(X).(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列
    R的全排列可归纳定义如下:
        当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素;
        当r>1时,Perm(R)由(r1)Perm(r1),(r2)Perm(r2).....(rn)Perm(rn)构成.
        依此递归定义,Perm(R)的递归算法如下:
*/

#include <iostream>
#include <cstdlib>

using namespace std;

void swap(int & a,int & b)
{
    int temp=a;a=b;b=temp;
}

void Perm(int list[],int k,int m)
{
    if(k==m)
    {
        for(int i=0;i<=m;i++)
         &......

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

#pragma指令使用简介(很好,转之)(2008-10-23 23:47:00)

摘要:#pragma指令使用简介(转) 在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. message 参数。 message 它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 二. 另一个使用得比较多的#pragma参数是code_seg。格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节。如果code_seg没有带参数的话,则函数存放在.text节中 push (可选参数)将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名 pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名 identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (......

阅读全文(2432) | 评论:1

雷劈数—腾讯QQ不敢发放的一个号码,附一段求雷劈数代码(2008-09-24 15:39:00)

摘要:/*腾讯QQ不敢发放的一个号码 
---------
内容

  大家先去查找60481729这个QQ。。。。。。
  怎么样?什么也查不到吧!为什么极其普通的一个号TX一直不敢放出来呢?
  首先得从这个号码的数字上分析原因。大家注意没?我把60481729这个QQ从
  中间分开,分成6048和1729两个数字。然后再相加。即6048+1729=7777,很
  不错的数字。还没完呢。继续。而7777?777=60481729,晕!怎么又回来了?
  ?这个数字正是传说中的雷劈数!(印度某个数学家发现的,之所以叫雷劈
  数是因为在雷雨天气路边的里程桩号“3025”被雷从中间劈成2半而正好被这
  个科学家走狗屎运发现的,因为30+25=55,55?5=3025。偶上小学时候在中国
  少年报上看的,现在在网上根本找不到雷劈数得名的原因,嘎嘎装下B)而腾
  讯的老马脑子里还是带点迷性,当初放号的时候像这类非常不吉利的数字都
  给注销了,万一哪天被雷劈了他肯定会死不瞑目的。干事业还是得图个吉利,
  而当初申请8位QQ那段时间腾讯正处于困难时期,听说老马差点50万把QQ卖了,
  所以对于这些不吉利的东西还是予以避讳。但是老马的智商还是有限的,雷
  劈数不仅仅只有这一个,比如25502500,24502500,52881984,99980001都
  是雷劈数。
  
    求8位qq号码里边的雷劈数!
    时间:08-9-18 13:24
*/

#include <iostream>
#include <cstdlib>

using......

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

pku2551解题报告(2008-09-16 19:35:00)

摘要://演算除法时可以发现规律
//某个数不能被n整除时,余数乘以10+1是下一个数整除n时倒数第二位的余数
//以7为例
//         ___0_      ___1__       ___15_    ___158_     __1587_      ___15873__
//       7/    1    7/  11        /  111    /  1111     / 11111      /  111111
//       /-----       /----7---    /--- 7-   /----7---   /---7---     /  --7----
//            1    &n......

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

pku2505解题报告(2008-09-15 22:12:00)

摘要://      pku2505
//    题意:p的初始值为1,两人轮流对p乘以2`9中的一个数,谁先大于等于n谁就赢了
//    假设输入的数是N,如果"我方"想赢,则"我方"在赢之前必然达到这样一个数:
//  N/18<=(M1)<N/9.然而,对方是不会让"我方"达到M1的情况的,所以要求对方给出的
//  M2这个数应符合这样的条件:(M2)*2<N/9 &&(M2)*9>=N/18.对方是不会甘心让
//  这个数在他手中出现的,所以"我方"给出的(M3)必须让对手无论怎样都能达到M2这样的要求,
//  所以满足:(M3)*9<N/(9*2)&& M3)*2>=N/(18*9),
//    即N/(18*18)<=(M3)<N/(9*18),在此我们走完了一个来回.
//    并且,我们从M1,M3的比较中可以知道:如果"我方"首先给出了一个在N不断除18后的得到不足10的数M,
//    "我方"就可以取得胜利,并且双方都很聪明,所以这样胜负就决定于N了。
//    结论:如果N不断除18后得到不足18的数M,如果1<M<=9则先手胜利,即stan wins.
//  如果9<M<=18则后手胜利.
//
//    上述分析纯属抄袭.受益良多,遂转之.
#include <iostream>

using namespace std;

int main()
{
    double n;
    while(cin>>n)
    ......

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