带我学一下看看这道题怎么编

img

供参考:

#include<stdio.h>
int main()
{
    int n,a[10]={0},i=0,flg=1;
    scanf("%d",&n);
    if(n < 0){n = - n;flg = -1;}
    while(n)
    {
         if((n%10)%2 == 1) a[i++] = n%10;
         n /= 10;
    }
    while(i--)
         n = n*10 + a[i];
    printf("%d\n",n*flg);
   
    return 0;
}

你遍历一下,看看哪一位是奇数,乘上它的权,最后加起来就行了

#include <stdio.h>
int main()
{
    char buf[10]={0};
    int n=0,i=0,t;
    int flag;
    scanf("%d",&n);
    if(n>0)
        flag = 1;
    else if(n <0)
    {
        flag = -1;
        n = -n;
    }
    else
        flag = 0;
    while(n)
    {
        t = n%10;
        if(t%2==1)
            buf[i++]= '0'+t;
        n/=10;
    }
    n = 0;
    i--;
    for(;i>=0;i--)
        n = n*10 + buf[i]-'0';
    n = flag * n;
    printf("%d",n);
    return 0;
}