《编程思维与实践》学习心得5

《编程思维与实践》学习心得5

1.字符串处理常用函数

1.strcmp函数: strcmp(str1,str2)

按照字典序比较str1和str2(如"A"<“B”,“A”<“AB”,“A”<“a”):

str1=str2时,返回0,

str1>str2时,返回值>0,

str1<str2时,返回值<0.

2.strcat函数: strcat(str1,str2)

str2加到str1尾端,返回值为str1的地址.

3.strcpy函数: strcpy(str1,str2)

把str2复制到str1中, 返回str1的地址.

4.strncpy函数: strncpy(str1,str2,n)

将str2中的n的字符(从首位开始)复制到str1中, 返回str1的地址

5.检索字符串\字符函数:

char* strchr(str,ch) 返回第一个字符ch在str中出现的地址;

char* strrchr(str,ch) 返回最后一个字符ch在str中出现的地址;

char* strstr(str1,str2) 返回第一个字符串str2在str1中出现的地址;

char* strrstr(str1,str2) 返回最后一个字符串str2在str1中出现的地址;

6.转浮点数\整数

atoi(转int),atof(转double),atol(转long int),atoll(转long long).

7.isspace(判断是否位空格或Tab键)和isdigit(判断是否为十进制数字字符).

2.目前遇到的题目可以考虑的思路

1.递归/迭代,若需要记录上一次的结果则采用迭代(将算出每一步的结果存起来以便计算下一步),核心是找递推关系式.

2.进制的借位与进位.

3.栈的思想(用一个指标去判断进出).

4.位运算可用于判断二进制位数或组合问题.

5.高精度问题开数组存储:除法模拟笔除计算过程,乘法先将每一位乘于某个数后最后再统一考虑进位(利用%求出该位最终的数,/10求出进位数).

6.去重可以考虑输出时候用条件判断重复的只输出一次.

7.暴力穷举遍历所有情况.

3.目前常见的问题

1.排序问题使用qsort函数时需要注意如果希望有些数据保持相对位置不变,则应先将其移到后端(或前端),且可以用结构体的指标来表示并不需要改变其位置,这是因为qsort排序时是将指针进行移位,中间数据的相对位置会发生变化.

2.strcpy在字符串移位的时候不应采用自覆盖,不然结果容易出现问题,应该先用一个temp去存取.

3.当心逻辑运算符"==“和赋值运算符”=".

4.各种运算的优先级,单目运算符结合方向是从右向左,其他为了以防万一最好利用括号来表示先后顺序.

5.当从极端情况去考虑时所需的数组很大则需要动态内存分配.

6.小心数据是否会超出int的范围,位运算的1需要32位还是64位.

7.超时需要考虑循环是否截止或者截止条件是否有误,再考虑算法的复杂度.

8.字符数组要小心越界的问题(‘\0’),应该开的稍微大一些.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值