这道题我的思路很常规,就是先用字符串存储屏幕上给出的数字,然后如果有'-'那么就把他排掉,计算剩下的,如果没有,那么按部就班地计算就好,但是在我编写好之后,它就会在较长的一段数的测试点上报运行时错误,刚开始我不知道是什么问题,后来自己在用比测试案例长的一个数字测试的时候发现出现了段错误,此时我有点意识到是string num引发的错误,于是换成了char num[51],然后就过了,那么,我需要知道为啥用string会报这样的错误?难道string给的数组不是无限长的,而是有界限的?那么这个界限又是什么东西呢?
代码如下:
#include <iostream>
#include <string>
#include <math.h>
#include <iomanip>
using namespace std;
int change_char_to_int(char c);
int is_two(int a);
int bool_even(int a);
int main()
{
double sum = 0;
char num[51];
char c;
int i = 0;
double even = 1;
double ms = 1;
double n_of_bits;
while((c = getchar()) != '\n')
{
num[i] = c;
i++;
}
num[i] = '\0';
//if(num[0] == '-')
//i = i -