关于剔除 一个多位数中的偶数并从新输出的问题

题目的大体意思是:编程

输入一个正整数,把各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数.数组

为何写这个题呢?
编码

这几天,老师给咱们布置的做业之一就是这道题,由于咱们班尚未学数组,因此不少同窗感到比较困难,因此这里主要讲不用数组的方法。spa

一:首先,咱们要先来分析这个问题:blog

1:完成这个任务续要那些数据?io

2:怎么获取这些数据?变量

3:而后怎么经过数据的处理来输出要求结果。循环

(主要呢就是这三个问题,若是有漏掉的还请指出,以便进一笔完善。)float

答:程序

1:咱们要获取那些位是偶数,那些不是,

即:共有多少位奇数。

2:经过if语句判断某位除以二的余数是否是0,进而得以判断是否是偶数。

(固然,分离各位仍是个问题,文章后面会插个地方讲一下。)

3:怎么处理数据呢,由于咱们要输出重组的新数,咱们能够真正的把它变成一个多位数在输出,也能够一个一个的输出,中间只要没空格就行呗。(不过顺序就是个问题了,固然用数组就能够完美解决)😀

OK如今问题分析完毕。

二:整体来看一下咱们须要那几部分编码。(由于有多重方法,讲一下其中比较麻烦的一种方法,其余几种方法后面会集中在进行概述。固然只是为了让你们加深对编程的理解与运用,不过实际上机考试之类的仍是要取最简单的方法。)

先看有多少位奇数(主要就是分离各位)

1:先大概说一下分离各位,(固然会的就能够直接跳过,往下看了)

经过某数对十求余,可得最后一位,而后该数除十在新欢往复,固然若是出十以后为零了,就不用继续了。

OK,如今编码求多少位奇数的语句

 do
    {
        s=a%10;
        if(s%2!=0)
        sum++;
        a=a/10;
    } while (a>0);
(直截取了求奇数个数的一部分,在加一点注意事项:本体所用到的变量全是int型)
全程序配截图
 
 

中间是程序内容,下面是试运行及输出结果。

 

 

 。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OK,下一步。

2:第二部有点麻烦,须要在具体解释一下:

直接输出的话会倒序,因此要作别的处理。

因此咱们要用别的方法,我先说一种比较麻烦的

:咱们说要输出的数呢,是一个整数,能够理解最后一位*10的零次幂,倒数第二位*10的一次幂·····。

因此,有了方法,就要看怎么编码::

以奇数的位数为判断标准,分别判断各个位数,并把奇数为分别乘以10的依次次幂,而后求和,加完后跳出,并输出所求之和,即为要求值。

如今编码。

这里就不发部分编码了,把上面的合并了,一块发出来

#include<stdio.h>
int main()
{
    int a, s, d, f = 0, t = 0, u = 1;
    int sum = 0, sum2 = 0;
    scanf("%d", &a);
    int q = a;
    do
    {
        s = a % 10;
        if (s % 2 != 0)
            sum++;
        a = a / 10;
    }
    while (a > 0);
    do
    {
        d = q % 10;
        q /= 10;
        if (d % 2 == 1)
        {
            t = d * u;
            f += t;
            u = u * 10;
            sum2++;
        }
    }
    while (sum2 != sum);
    printf("%d\n", f);

    return 0;

}
此为标准编码。
固然,变量的定义不是太规范。
仍是能够看懂的。
OK,任务完成。
固然,还能够在判断的时候就开始求和,并经过判断原数是否为零决定是否结束循环。
如今,结束了。完成编写。
而后呢,但愿你们看到有什么不对的地方能够予以指正。但愿你们能够吧后面的那个一个循环解决问题的代码敲一下。就当锻炼本身的手速了😉OK
就到这里,谢谢你们。
相关文章
相关标签/搜索