编程中遇到的小bug

1.栈

1.1空栈不能取顶。

if(stack.top() == '(' || stack.size() == 0)
//如果栈本身为空,这里if中首先取栈顶,就会导致段错误
//SIGSEGV --- Segment Fault

2.字符串String

2.1字符串定义的时候要申请空间,在没申请空间(初始化)的情况下直接用下标访问某处字符并不会存储到字符串中,其实那个地方仍旧是字符串结束符(只是一种标记),即‘\0’。
在这里插入图片描述
2.2回文数字的生成
以7(n)位回文数为例,那么前3位(n/2)必然是从100-999(pow(10,n/2-1):pow(10,n/2)),只需要把这个数反复求余、除以10,就能得到每一位后,填充回文数的右半部份。
如果是奇数,最中间的那一位循环取0-9。

2.3处理字符串的子字符串后,注意下标值要变更>1。

2.4字符串整体读入时,如果用cin.getline(),但前面也用过cin输入数字,那么必须用cin.get()将数字行的回车吃掉,否则会错读下面的。

char temp[5000];
int ;
cin >> T;
cin.get();//没有这一行,那么temp第一次读到的就是回车了。
while(T--) {
	cin.getline(temp, 5000)}

3.精度损失

考虑到计算机可能由于用科学计数法表示结果而造成不必要的精度损失。

//解决办法:
double ans[50];
cout << fixed << setprecision(0) << ans[b - a + 1] << endl;

4.数据溢出

在迭代打表中,可能结果已经超出int,需要注意换为longlong,实例同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值