char a[10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000];//题目要求是10的一百次方的数字,求这个数字能否被3整除。 求下面代码的错误之处 int n,b,c=0,m,i,j; scanf("%d",&n); for (j=0; j<n; j++)//输入n个测试用例 { gets(a);// 刚学。 从这到下面是真不会。。。 求指教、、、 while(a[i]!='\0') { scanf("%d",&a[i]); b=a[i]; c+=b; i++; } if (c==0) printf("Yes\n"); else printf("No\n"); 希望能指出代码的错误并求大数问题中字符数组的求法。 我知道要用字符串给字符数组然后每一个位数来处理。 可是代码总错、 求指教。 非常感谢、!
明白了!谢谢老师的精彩回答!、很清晰!非常感谢!~
老师,以后有不会的还想请教~ 祝您生活开心!~^_^
没有电脑能够开这么大的数组;
10的一百次方,位数不会超过101,所以直接char a[101]就够了;
可以用scanf来获取字符串scanf("%s",a);
a[i]是字符,所以b应该等于: b=a[i] - '0';
每一次外层循环的时候c没有初始化
累加完毕后,c要mod除3,判断余数是否等于0,而不是c;
自行实现的代码如下:
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
for (int i=0;i<n;i++)
{
char A[101];
scanf("%s",A);
int num = 0;
for (int j=0;A[j]!='\0';j++)
num += (A[j] - '0');
num %= 3;
if (!num)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
追问哦,非常感谢!