注册 登录
编程论坛 C语言论坛

c++谢谢大神

SRXabc 发布于 2018-06-21 18:21, 1152 次点击
判断一个数的数位上有多少个奇数,并求出奇数的和。
 如一个五位数:56384,有2位为奇数(万位是5,百位是3),奇数和为8。

输入

输入一个整数N。(10<N<1019)

输出

输出N的数位上有多少个奇数以及奇数之和。

样例输入

32578

样例输出

3
15
4 回复
#2
八画小子2018-06-21 19:58
自己先想象怎么做?总不至于连int main(void){}也不会写吧?
#3
MY002018-06-23 21:06
回复 楼主 SRXabc
程序代码:
#include <iostream>

using namespace std;

int main()
{
    int num;
    cin>>num;

    int sum=0,n=0,m=0; //求和,取位,计数
    while(num%10!=0)   //判断,取位为0则结束
    {
        n=num%10;      //由后往前依次取位
        if(n%2!=0)     //判断奇数
        {
            sum+=n;
            m++;
        }
        num/=10;       //依次除取最后一位,直到为0
    }

    cout<<m<<" "<<sum<<endl;
    return 0;
}                       //目标是奇数,就要把各数位分解出来,再进行判断,求和
#4
九转星河2018-06-23 21:42
回复 3楼 MY00
楼主说的数据范围是1019

用int干嘛,1019用unsigned short就可以了

至于下面样例32578超过1019倒是出题人留给解答者的一个迷了

正常不是用getchar来解决么,来个char[]也好嘛~
C++有string类

很方便的~

#5
lin51616782018-06-23 22:14
回复 4楼 九转星河
1019 可能是 10的十九次方的意思
1