第三章 数组与字符串

来源:互联网 发布:矩阵的秩代表什么 编辑:程序博客网 时间:2024/06/06 01:42

1.模拟题:模拟人工操作的过程,如开灯问题,蛇形填数等。依照人工处理的方式,用算法实现之。

2.输入输出的兄弟

scanf,sscanf,fscanf,printf,sprintf,fprintf,可以分别实现标准输入输出,从字符串输入输出,从文件输入输出。

3.与字符串相关的处理函数

strlen,strstr,strchr(返回的是一个指针),strcmp,strcat,strlwr,strupr,memcpy,memset;

fgetc(fin),getchar(),putchar(),fgets(buf,maxn,stdin);

isalpha,isdigit,isalnum,isupper,islower;

4.善于利用数组常量(事先保存一定的常用数据)来简化问题难度

比如统计日数,就可以用数组存储每个月的日数,之后便于计算;还有生成元问题,实现把所有的生成元找出来,之后只要直接输出即可;还有幸运数问题,也可以采用这种打表的方;方向旋转的问题,可以事先开一个常量数组,代替4方向或者8方向的二重循环。所以,在一些问题中,适当地使用常量数组,可以大大节约时间和思考的规模。

5.循环序列(化直为曲)

用一个一维数组来形成一个环状序列,从而达到头尾相接的目的。需要用到的技巧就是,i=(i+1)%maxsize;

6.谓词(判断一个事物是否具有某种特征)

常用于函数的命名,比如:isprime,isdigit,isalpha等等,这样可以使得代码的可读性较高。

7.对于比较大的数组一般开在main函数之外,如果开在里面成为局部变量,很有可能爆栈。

8.fgetc(fin)->fgetc(stdin)==getchar,putchar;fgets(buf,maxn,fin)->gets(buf),因为gets没有指明最大存储量,会造成缓冲区溢出情况,现在C11标准已经去除了gets函数。

9.C++中字符串类常用的处理:

1.构造字符串:
  1)string a;

  2)string a(s)

  3)string a(n,char)

  4)string a(s,start,len)

2.返回字符串长度:
  1)s.size()

  2)s.length()

  3)s.empty()

3.字符串赋值
  1)s1=s2;

  2)s1=char;

  3)s1.assign(s2)

  4)s1.assign(s2,start,len)

  5)s1.assign(n,c)

4.存取元素:
  1)s.at(idx)

  2)s[idx]

5.插入元素:
  1)s1.insert(idx,s2)(注意插入的要是字符串,不能是字符型)

  2)s1+=s2或者char

  3)s1.append(s2)

  4)s1.append(s2,start,len)

  5)s1.append(n,c)

6.删除元素:
  1)s.erase(idx,[len])

  2)s.erase()(删除整个字符串)

  3)s.clear()

7.截取子串:
  1)s.substr(idx,[len])

  2)s.substr()

8.查找:
  1)s.find(char,[idx])

  2)s.find(s1,[idx])

  注:返回的是下标,而不是地址。如果没有找到,那么就返回string::npos

9.串替换:
  1)s.replace(idx,len,s1)

10.比较

  1)>,>=,<,<=,==,!=

  2)s1.compare(s2)

0 0
原创粉丝点击