zoukankan      html  css  js  c++  java
  • 硬盘上的一些算法小题目||and今天看了下林锐的书以及gdb调试 及一些变成算法小题目

    gdb调试:观察点,断点,事件捕捉点。step 进入函数,next 跳过函数,until 跳出循环,finish 结束函数

    林锐:书后试题 & c++的对象模型图

    看了二叉树的非递归遍历,

    链表的操作,

    ZT 设计模式六大原则(1):单一职责原则

    ZT 设计模式六大原则(2):里氏替换原则 所有引用基类的地方必须能透明地使用其子类的对象











    /* 递归求一个数组的和 (2010-04-11 15:34:25)转载▼ 标签: 杂谈 分类: C—Programming */ int sum(int a[],int n) { if(n>=1) return a[n-1]+sum(a,n-1); else return 0; } void main() { int a[3]={1,2,3}; int data=sum(a,3); printf("sum=%d ",data); } #include<stdio.h> #include<string.h> char *revert(char *str) { char temp; char *p = str; char *q = str; int strlong = 0; int i; strlong = strlen(str); q+= (strlong - 1); for(i = 0; i <= strlong/2; i++) { temp = *q; *q = *p; *p = temp; p++; q--; } return str; } main() { char str[] = "abcdefghijklmnopqrstuvwxyz"; revert(str); printf("%s ",str); } http://tech.163.com/06/0628/09/2KMP8QP60009159Q_3.html memcpy与strcpy实现 2009年01月02日 星期五 下午 04:42 void* memcpy(void* pvTo, const void* pvFrom, size_t size) { assert((pvTo!= NULL) && (pvFrom!= NULL));//使用断言防止传递空地址 unsigned char* pbTo = (unsigned char*)pvTo;//防止改变pvTo的地址 unsigned char* pbFrom = (unsigned char*)pvFrom;//防止改变pvFrom的地址 while(size-- > 0) { *pbTo++ = *pbFrom++; } return pvTo; } char* strcpy(char* pDest, const char* pSrc) { assert((pDest != NULL) && (pSrc != NULL)); char *pTmp = pDest; while ((*pDest++ = *pSrc++) != '') ; return pTmp; } void strcpy(char *s,char *t) { assert((pDest != NULL) && (pSrc != NULL)); while(*s++ = *t++) ; } 把一个char组成的字符串循环右移n个 http://tech.163.com/06/0628/09/2KMP8QP60009159Q_3.html 正确解答1: void LoopMove ( char *pStr, int steps ) {  int n = strlen( pStr ) - steps;  char tmp[MAX_LEN];  strcpy ( tmp, pStr + n );  strcpy ( tmp + steps, pStr);  *( tmp + strlen ( pStr ) ) = '';  strcpy( pStr, tmp ); }   正确解答2: void LoopMove ( char *pStr, int steps ) {  int n = strlen( pStr ) - steps;  char tmp[MAX_LEN];  memcpy( tmp, pStr + n, steps );  memcpy(pStr + steps, pStr, n );  memcpy(pStr, tmp, steps ); } class String {  public:   String(const char *str = NULL); // 普通构造函数   String(const String &other); // 拷贝构造函数   ~ String(void); // 析构函数   String & operate =(const String &other); // 赋值函数  private:   char *m_data; // 用于保存字符串 };   解答: //普通构造函数 String::String(const char *str) {  if(str==NULL)  {   m_data = new char[1]; // 得分点:对空字符串自动申请存放结束标志''的空   //加分点:对m_data加NULL 判断   *m_data = '';  }  else  {   int length = strlen(str);   m_data = new char[length+1]; // 若能加 NULL 判断则更好   strcpy(m_data, str);  } } // String的析构函数 String::~String(void) {  delete [] m_data; // 或delete m_data; } //拷贝构造函数 String::String(const String &other)    // 得分点:输入参数为const型 {  int length = strlen(other.m_data);  m_data = new char[length+1];     //加分点:对m_data加NULL 判断  strcpy(m_data, other.m_data); } //赋值函数 String & String::operate =(const String &other) // 得分点:输入参数为const型 {  if(this == &other)   //得分点:检查自赋值   return *this;  delete [] m_data;     //得分点:释放原有的内存资源  int length = strlen( other.m_data );  m_data = new char[length+1];  //加分点:对m_data加NULL 判断  strcpy( m_data, other.m_data );  return *this;         //得分点:返回本对象的引用 } int fun(char *s) { char *t=s; while(*t ++); t--;//先让t移动到''后一个字符上,然后t往前退一个字符,相当于到了‘’,然后减开头指针,得到字符串字符个数 return (t-s); } 应该也可以写出一个10分的strlen函数了,完美的版本为: int strlen( const char *str ) //输入参数const {  assert( strt != NULL ); //断言字符串地址非0  int len;  while( (*str++) != '' )  {   len++;  }  return len; } gets(s); for(i=j=0;s[i]!='';i++) { if(s[i]!='C') s[j++]=s[i]; s[j]=''; } puts(s);
  • 相关阅读:
    「网易官方」极客战记(codecombat)攻略-沙漠-Sarven 牧羊人-sarven-shepherd
    「网易官方」极客战记(codecombat)攻略-沙漠-掠夺者-marauder
    「网易官方」极客战记(codecombat)攻略-沙漠-猛砸他们全家-bash-em-all
    「网易官方」极客战记(codecombat)攻略-沙漠-优待-preferential-treatment
    「网易官方」极客战记(codecombat)攻略-沙漠-潜伏-lurkers
    「网易官方」极客战记(codecombat)攻略-沙漠-游魂-wandering-souls
    「网易官方」极客战记(codecombat)攻略-沙漠-银行突袭_bank-raid
    Python——逗号
    Vue和drf的一些操作
    django项目准备
  • 原文地址:https://www.cnblogs.com/jeanschen/p/3539730.html
Copyright © 2011-2022 走看看