c++数组中元素过大的问题

定义一个小于100个元素的正整数数组,检查元素是否为3的倍数,但是数组中的其中一个正整数将近1000位,导致元素过大,判断不正常怎么办

既然是正整数,那数组中的数应该在整数int范围内才对。

首先你怎么定义这个正整数数组呢?如果是元素可以有1000位,那你只能定义字符串数组,而不是正整数数组。3的倍数计算方法比较简单,将这1000位数字不断求和,直到剩下一个数字,如果是3,6,9,那么就是3的倍数

#include <stdio.h>
int fun(char *s)
{
    int i=0;
    int n=0,m=0,k=0;
    while(s[i] != '\0')
    {
        n += s[i] - '0';
        i++;
    }
    while(n>=10)
    {
        m=n;
        n=0;
        while(m>0)
        {
            n+=m%10;
            m=m/10;
        }
    }
    return (n%3==0);
}


int main()
{
    char s[100][1000] = {0};
    int n=0,i;
    scanf("%d",&n); //n表示数组实际有多少个整数
    getchar();
    for(i=0;i<n;i++)  //输入所有整数,按字符串接收
    {
        gets(s[i]);
    }
    printf("3的倍数有:\n");
    for(i=0;i<n;i++)
    {
        if(fun(s[i]))
            puts(s[i]);
    }
    return 0;
}

可以将这个数字的每一位加起来,看看和能不能被3整除。