一道c++的题,看半天都想不出来

img

问题:为什么数组中7只有三个,程序运行后显示有4个??
输出结果

img

我的代码,


#include
using namespace std;
int main()
{
    int a[]={5,26,98,77,1,27,30},i=0;
    int b[10]={0,0,0,0,0,0,0,0,0,0};
    do
    {
        
        if(a[i]>9)
        switch(a[i]/10)
        {
            case 0:  b[0]++;
                     break;
            case 1:  b[1]++;
                     break;
            case 2:  b[2]++;
                     break;
            case 3:  b[3]++;
                     break;                     
            case 4:  b[4]++;
                     break;
            case 5:  b[5]++;
                     break;                     
             case 6:  b[6]++;
                     break;
            case 7:  b[7]++;
                     break;                    
             case 8:  b[8]++;
                     break;
            case 9:  b[9]++;
                     break;                           
        }
    }while(a[++i]);
    i=0;
    do
    {
        switch(a[i]%10)
        {
            case 0:  b[0]++;
                     break;
            case 1:  b[1]++;
                     break;
            case 2:  b[2]++;
                     break;
            case 3:  b[3]++;
                     break;                     
            case 4:  b[4]++;
                     break;
            case 5:  b[5]++;
                     break;                     
             case 6:  b[6]++;
                     break;
            case 7:  b[7]++;
                     break;                             //    为什么不管a[]是多少,case7都至少执行一次???  
             case 8:  b[8]++;
                     break;
            case 9:  b[9]++;
                     break;                           
        }
    }while(a[++i]);    

    cout<<"0~9依次出现"<<'\t';
    for(i=0;i<10;i++)
        cout<'\t';
    cout<<"次";
    return 0;
}

大哥,你这个代码,额😓