定义一个小于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整除。