博文

逆转和忽略大小写并且忽略标点(2009-08-21 20:49:00)

摘要://Reverse_string.h#ifndef REVERSE_STRING_H#define REVERSE_STRING_H #include<string> // #include<cstring>  will cause error! string   Reverse(string   str)   {     string   S;     int   n=str.size();     while(n>0)     {       n--;       S+=str[n];     }     return   S;   } string Convert(string str){  int n=str.size();  while(n>0)     {       n--;    if(str[n]>=65&&str[n]<=90) str[n]+=32;  //convert capital letter into small letter,in order to ignore the form     //str[n]=(str[n]>90? str[n]+32:str[n]);  }  return str;} string Ignore(string str){ int n=str.size(); string s; for(int i=0;i<n;i++) {  if((str[......

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

逆转字符串(2009-08-21 20:49:00)

摘要:#include   <string>     #include   <iostream>     using   namespace   std;     /*       循环实现     string   Reverse(string   str)     {     string   S;     int   n=str.size();     while(n>0)     {     n--;     S+=str[n];     }     return   S;     }*/     string   Reverse(string   str)     {//递归实现     static   string   S;     static   n=str.size();     if(n>0)     {     n--;     S+=str[n];     Reverse(   str);     }     return......

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

如何在MFC中使用LISTBOX控件(2009-08-19 00:48:00)

摘要:如何在MFC中使用LISTBOX控件。实例如下: 一。首先新建一个Single或者对话框类型的MFC.EXE工种。 二。插入一个Dialog,然后新建一个类CDlgList,我们可以利用这个控件显示项目,也可实现多选,得到选项总数等.其源程序如下: // DlgList.cpp : implementation file// #include "stdafx.h"#include "testvc.h" #include "DlgList.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif /////////////////////////////////////////////////////////////////////////////// CDlgList dialog CDlgList::CDlgList(CWnd* pParent /*=NULL*/): CDialog(CDlgList::IDD, pParent){//{{AFX_DATA_INIT(CDlgList)//}}AFX_DATA_INIT} void CDlgList::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDlgList)DDX_Control(pDX, IDC_BUTTON1, m_Del);DDX_Control(pDX, IDC_EDIT1, m_Edit);DDX_Control(pDX, IDC_LIST1, m_Lst);//}}AFX_DATA_MAP} BEGIN_MESSAGE_MAP(CDlgList, CDialog)//{{AFX_MSG_MAP(CDlgList)ON_BN_CLICKED(IDC_BUTTON1, OnAddString)ON_BN_CLICKED(IDC_BUTTON2, OnDel)ON_BN_CLICKED(IDC_BUTTON5, OnClear)ON_BN_CLICKED(IDC_BUTTON3, OnGetCount)ON_BN_CLICKED(IDC_BU......

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

mfc之ListBox介绍(2009-08-19 00:47:00)

摘要:ListBox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数:BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。LBS_MULTIPLESEL 指明列表框可以同时选择多行LBS_EXTENDEDSEL 可以通过按下Shift/Ctrl键选择多行LBS_SORT 所有的行按照字母顺序进行排序在列表框生成后需要向其中加入或是删除行,可以利用:int AddString( LPCTSTR lpszItem )添加行,int DeleteString( UINT nIndex )删除指定行,int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。void ResetContent( )可以删除列表框中所有行。通过调用int GetCount( )得到当前列表框中行的数量。如果需要得到/设置当前被选中的行,可以调用int GetCurSel( )/int SetCurSel(int iIndex)。如果你指明了选择多行的风格,你就需要先调用int GetSelCount( )得到被选中的行的数量,然后int GetSelItems( int nMaxItems, LPINT rgIndex )得到所有选中的行,参数rgIndex为存放被选中行的数组。通过调用int GetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。此外通过调用int FindString( int nStartAfter, LPCTSTR lpszItem )可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。int SelectString( int nStartAfter, LPCTSTR lpszItem )可以选中包含指定字符串的行。在MFC 4.2版本中添加了CCheckListBox类,该类是由CListB......

阅读全文(11048) | 评论:2

MFC ListBox(2009-08-19 00:46:00)

摘要:ListBox的操作比较简单1添加数据声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.m_ListBox_Content.AddString(_T("123"));m_ListBox_Content.AddString(_T("汉字"));m_ListBox_Content.AddString(_T("English"));m_ListBox_Content.AddString(_T("!@#$%^&*()"));2获取数据CString s;m_ListBox_Content.GetText(1,s);MessageBox(s,_T("取得第2行数据"),MB_OK);s.ReleaseBuffer(); 将会得到"汉字"这个字符串,如果没有得到"汉字"这个字符串,是因为ListBox的Sort属性设为True了.设为False之后就按照你编写的顺序写入. 3获取选择的数据首先要将ListBox的Selection属性设置为Multiple;int nSel;nSel=m_ListBox_Content.GetCurSel();CString s;m_ListBox_Content.GetText(nSel,s);MessageBox(s,_T("您选择的是"),MB_OK);s.ReleaseBuffer(); 4获取选择ListBox项的多个数据 首先要将ListBox的Selection的属性设置为Multiple int nSel = m_ListBox_Content.GetSelCount();CArray< int,int& > arrayListSel;arrayListSel.SetSize(nSel);    m_ListBox_Content.GetSelItems(nSel,arrayListSel.GetData());    CString s = _T("");for( int i=0; i< nSel; i++ ){m_ListBox_Content.GetText( arrayListSel[i], s);MessageBox(s,_T("您选择的是"),MB_OK);......

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

MessageBox的用法(2009-08-19 00:41:00)

摘要: 我们写MFC程序的时候经常会用到MessageBox这个函数,用来显示一些提示信息,而且通常我们用的都是很简单的形式。今天我看了Word里退出是显示的提示保存的对话框之后忽然想到用MFC的MessageBox是不是也可以实现呢?于是,我仔细的查了一下,于是就总结了一些常用的用法。       先来看Messagebox函数的原型:       int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );参数解释:lpszText  ------  对话框显示的内容pszCaption  ------  对话框的标题,默认的空nType  ------  对话框的类型,默认的类型为只显示一个确定按钮前两个参数都不需要说明解释,主要的就是最后一个类型参数。MFC中为MessageBox定义了一些类型:MB_ABORTRETRYIGNORE  ------  对话框显示中止,重试和忽略三个按钮MB_OK  ------  前面说过,是默认类型,对话框只显示一个确定按钮MB_OKCANCEL  ------  显示确定和取消两个按钮MB_RETRYCANCEL  ------  显示重试和取消两个按钮MB_YESNO  -------  显示是和否两个按钮MB_YESNOCANCEL  ------  显示是,否和取消两个按钮以上是全部的基本的标识,还有一些辅助的标识:MB_DEFBUTTON1  ------  用来确定选中的按钮,表示选中第一个按钮,此项为默认的选中按钮MB_DEFBUTTON2  ------  表示选中第二个按钮MB_DEFBUTTON3  ------  表示选中第三个按钮在MessageBox显示的对话框上除了可以显示文字,MFC里还定义了一些图标:MB_ICONEXCLAMATION和MB_IC......

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

ACM--猪的安家(2009-08-03 23:48:00)

摘要:/**********************************************************************************************************************************猪的安家Andy和Mary养了很多猪。他们想要给猪安家。但是Andy没有足够的猪圈,很多猪只能够在一个猪圈安家。举个例子,假如有16头猪,Andy建了3个猪圈,为了保证公平,剩下1头猪就没有地方安家了。Mary生气了,骂Andy没有脑子,并让他重新建立猪圈。这回Andy建造了5个猪圈,但是仍然有1头猪没有地方去,然后Andy又建造了7个猪圈,但是还有2头没有地方去。Andy都快疯了。你对这个事情感兴趣起来,你想通过Andy建造猪圈的过程,知道Andy家至少养了多少头猪。 输入 输入包含多组测试数据。每组数据第一行包含一个整数n (n <= 10) – Andy建立猪圈的次数,解下来n行,每行两个整数ai, bi( bi <= ai <= 1000), 表示Andy建立了ai个猪圈,有bi头猪没有去处。你可以假定(ai, aj) = 1. 输出 输出包含一个正整数,即为Andy家至少养猪的数目。 样例输入 33 15 17 2 样例输出 16***********************************************************************************************************************************/ #include<iostream>#include<cstdlib>using namespace std;void pigNums(int n){ int ai[10],bi[10],i=0; if(n>10||n<1)   abort(); for(i=0;i<n;i++) {  cin>>ai[i]>>bi[i];  if(ai[i]<bi[i]||bi[i]>1000||ai[i]<1)......

阅读全文(1384) | 评论:3

[转] 一个程序员对学弟学妹的建议(2009-08-03 22:29:00)

摘要:我始终认为,对一个初学者来说,IT界的技术风潮是不可追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。  几个误区  初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:  认为计算机技术等于编程技术:  有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。  其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。  咬文嚼字的孔已己作风:  我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,像计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生像学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP......

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

没有注释的代码永远不是好代码(2009-08-03 10:17:00)

摘要:教授语重心长地说了,师兄也毕业赠言:   没有注释的代码永远不是好代码!......

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

宏定义的技巧总结(2009-08-03 09:24:00)

摘要:1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H   //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef  unsigned char      boolean;     /* Boolean value type. */   typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */ typedef  unsigned short     uint16;      /* Unsigned 16 bit value */ typedef  unsigned char      uint8;       /* Unsigned 8  bit value */   typedef  signed long int    int32;       /* Signed 32 bit value */ typedef  signed short       int16;       /* Signed 16 bit value */ typedef  signed char        int8;        /* ......

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