数组字符串:大整数的因子

#include
#include
#include
using namespace std;

int main()
{
    char inp[30];
    cout << "please input your number:" << endl;
    cin >> inp;
    int c = 0, i = 0, j = 2, k = 0, len;
    int flag = 0;
    len = strlen(inp);
    for (j = 2; j <= 9; j++)
    {
        int cur = 0;
        for (k = 0; k < len; k++)
        {
            cur = cur * 10 + inp[k]-'0';//为什么这一行加上-‘0’就可以得到正确的结果,不加就不行
            cur = cur % j;
        }
        if (cur == 0)
        {
            cout << j << ' ';
        }
        flag = 1;
    }
    if (flag == 0)
    {
        cout << "none";
    }
    return 0;
}

inp是字符数组,里面的每一个元素都是一个字符,转成int后会变为字符对应的ascll码,例如'0'的ascll码就是48,‘1’就是49,‘9’对应57等,所以假设inp[k]的值为‘1’,在实际计算过程中它的值和int类型的49等同,如果想让它按照int类型的1进行计算,就需要减去'0'也就是int类型的48.
希望可以帮到你
补上ascll码的百度百科:https://baike.baidu.com/item/ASCII/309296