#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