早教吧 育儿知识 作业答案 考试题库 百科 知识分享

判断被3和11整除?描述输入一个非负整数,判断该数能否被3和11整数.输入输入数据有多组.第一行是整数T,表示测试数据的组数.每组测试数据有一行,即为要判断的非负整数,最多不超过500位.输出

题目详情
判断被3和11整除?
描述
输入一个非负整数,判断该数能否被3和11整数.
输入
输入数据有多组.
第一行是整数T,表示测试数据的组数.
每组测试数据有一行,即为要判断的非负整数,最多不超过500位.
输出
对于每组输入,输出一行判断结果,第一个单词(Yes或No)表示该数能否被3整除,第二个单词(Yes或No)表示该数能否被11整除,两个字符串之间用一个空格隔开.
样例输入
2
33
121121121121
样例输出
Yes Yes
No Yes
我是这样做的:
#include#include
int main()
{ char a[501];
int i,l,sum,sumji,sumou,n;
scanf("%d",&n);
while(scanf("%s",a)!=EOF)
{ l=strlen(a);
sum=0;
if(a[0]=='0')
printf("Yes Yes\n");
else{for(i=0;i
▼优质解答
答案和解析
问题有3点:
1. 既然读取了测试数据的组数,为什么还用while(!EOF)来判断输入结束,当然问题可能不大,最好不要这样.
2. 对于a[0]=0的处理没有必要,可能导致错误,如输入0111,应该能被3整除,不能被11整除.
3. a是一个字符数组,那么a[i]的值就是字符对应的ASCII值了,所以应该-'0'处理.
修改后的代码如下:
#include
#include
int main()
{
char a[501];
int i,l,sum,sumji,sumou,n;
scanf("%d",&n);
while(n--) // 对应问题1
{
scanf("%s",a); //
l=strlen(a);
sum=0; // 第一个数字是0不影响计算,不做处理,对应问题2
for(i=0;i