hudoooo 2022-09-08 20:39 采纳率: 100%
浏览 12
已结题

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

#include<iostream>
#include<cmath>
#include<cstring>
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;
}

  • 写回答

1条回答 默认 最新

  • Ubabi_? 2022-09-08 20:47
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月8日