C:输入数字计数(数组方法)

两类题型

  1.例如 1 2 3 2 1 -1 然后计数

#include <stdio.h>
#include <stdlib.h>

int main()
{
    //解决计数问题,当输入-1的时候代表停止输入
    /*
        思路
        通过数组cout[]作为计数器,每次键入的值如果为0-9,则该cout[i]++ cout[i]表示键入数字的容器,每键入一次加1
    */
    int num, i;
    int cout[10];

    for (i = 0; i < 10; i++)
    {
        cout[i] = 0;
    }
    scanf("%d",&num);
    while(num != -1)
    {
        if (num>=0 && num <= 9)
        {
            cout[num]++;
        }
        scanf("%d",&num);
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d出现的次数为%d\n", i, cout[i]);
    }

}

  核心在于使用scanf与while的结合方法

  2.例如输入整型123321,计数

#include <stdio.h>
#include <stdlib.h>

int main()
{

    /*
        问题:键入一个整型,计算整型数字中每个数字出现的个数
        思路
            例 1223
            1.接收数字后,使用每次取末位的方式,取出 (循环终止条件为num!=0)   number接收末位数字
            2.放在cout[i]计数器中
            3.打印
        1223
                    num = 1223
        number = 3  num = 122   cout[3] = 1
                 2        12    cout[2] = 1
                 2        1     cout[2] = 2
                 1        0     cout[1] = 1
    */


    int num, number, i;
    int cout[10];
    scanf("%d",&num);
    for (i = 0; i < 10; i++)
    {
        cout[i] = 0;
    }
    while(num != 0)
    {
        number = num % 10;
        num = num / 10;
        if (number >=0 && number <= 9)
        {
            cout[number]++;
        }
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d出现的次数为%d\n", i, cout[i]);
    }
}

  和第一种类似

  两种方法都要注意,使用数组之前,要对其初始化

    for (i = 0; i < 10; i++)
    {
        cout[i] = 0;
    }

  其中关于数组初始化还有一个技巧:

  tip:

  直接cout[ ] = {0}

  也可以用cout[ ] = {[1] =2, 4,[5]=6 }

  输出为 0 2 4 0 0 6

posted on 2019-05-07 21:13  zhaoy_shine  阅读(1238)  评论(0编辑  收藏  举报

导航