一看题目其实是对输入数字中偶数的处理,一般用到取模的操作,但我又想简单点,弄一个通过键入字符的形势处理,单独的去看每一个数字,很遗憾,虽然效果一样,但是平台评测通过不了,时间超时,因为我是对一个个字符进行处理,不是对整个数字,也放在下面作为参考吧
#include<iostream>
using namespace std;
int main()
{
int n=0;
char ch;
while(ch=getchar())
{
if(ch=='\n')//对换行符单独处理,重置n,并跳过后续处理,一定要加上continue,
{
cout<<n<<endl<<endl;
n=0;
continue;//不然会进行'\n'-'0'的acs码操作,导致结果错误
}
if((ch-'0')%2==0)
{
n+=(ch-'0');
}
}
return 0;
}
正确的解法
#include<iostream>
using namespace std;
int main() {
int n, a;
while (cin >> n) {//键入数字不需要处理换行符
int result = 0;
while (n != 0) {
a = (n % 10);//取模,实际上是在计算个位数,即a=n的个位数
n = n / 10;//整数除法还是整数,这样用过的个位数就消失了
if (a % 2 == 0) result += a;
}
cout << result << endl;
cout << endl;
}
}