C++输入文件中包含多个测试数据,每个测试数据为一个整数,其位数最大可达1000位。测试数据一直到文件尾

在初等数学里,我们已经学会了如何判断一个整数是否能被2、3、5整除。其中判断一个整数能否被3整除比较麻烦:需要将该整数每位上的数字累加起来,判断累加和是否能被3整除。

在本题中,给定一个位数最大可达1000位的整数,判断是否能被3整除。
输入
输入文件中包含多个测试数据,每个测试数据为一个整数,其位数最大可达1000位。测试数据一直到文件尾。

输出

对输入文件中的每个测试数据,如果能被3整除,输出yes,否则输出no。

样例输入

111111111111111111111
7654321
123456

样例输出
yes
no
yes

第1个回答  2013-10-20
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
#include <fstream>
using namespace std
void main(void){
ifstream infile("by3.txt");
int sumby3=0;
char ch,flag=1;
while(!infile.eof()){
if((ch=infile.get())!=' ' && ch!='\n'){
cout << ch;
sumby3+=ch-'0';
flag=1;
}
else if(flag){
cout << endl;
if(!(sumby3%3)) cout << "Yes" << endl;
else cout << "No" << endl;
flag=sumby3=0;
}
}
infile.close();
cout << endl;
}
第2个回答  2013-10-19
当字符串处理
每个字符转数字,所有字符单独转数字相加,判断累加和是否能被3整除追问

还没学字符串呢,具体的怎么写啊

追答

111111111111111111111
7654321
123456

111111111111111111111 当成字符串,也就是

char inputChars[] = {'1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'};
int length = sizeof(inputChars) / sizeof(inputChars[0]);
int sum = 0;
int value;
for(int i=0;i<length;i++)
{
    value = inputChars[i] - '0';
    sum += value;
}


这样就得到所有位累加和了

判断 0 == sum%3 就可以了

本回答被提问者采纳
第3个回答  2013-10-19
输入文件是txt吗?
相似回答