#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;
}
数组字符串:大整数的因子
- 写回答
- 好问题 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无用