假定在一个整形数组中,每一个元素都是不超过3位的正整数,统计该数组全部元素中数字0、1、…、9各出现的次数

下列代码不知哪里出错了
#include
#include
using namespace std;
int xunzhao(int a[10])
{
int i,flag,f,b,c,d,e,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,L=0;
for(i=0;i<10;i++)
{
flag=log10(a[i])+1;
if(flag==1)
{
switch(a[i])
{
case 1:B++;break;
case 2:C++;break;
case 3:D++;break;
case 4:E++;break;
case 5:F++;break;
case 6:G++;break;
case 7:H++;break;
case 8:I++;break;
case 9:L++;break;
}
}
if(flag==2)
{
f=a[i]/10;
b=a[i]%10;
switch(f,b)
{
case 0:A++;break;
case 1:B++;break;
case 2:C++;break;
case 3:D++;break;
case 4:E++;break;
case 5:F++;break;
case 6:G++;break;
case 7:H++;break;
case 8:I++;break;
case 9:L++;break;
}
}
if(flag==3)
{
c=a[i]%10;
d=a[i]/100;
e=(a[i]%100)/10;
switch(c,d,e)
{
case 0:A++;break;
case 1:B++;break;
case 2:C++;break;
case 3:D++;break;
case 4:E++;break;
case 5:F++;break;
case 6:G++;break;
case 7:H++;break;
case 8:I++;break;
case 9:L++;break;
}
}
}
cout << "出现0的次数为:" << A << '\t';
cout << "出现1的次数为:" << B << '\t';
cout << "出现2的次数为:" << C << '\t';
cout << "出现3的次数为:" << D << '\t';
cout << "出现4的次数为:" << E << '\t';
cout << "出现5的次数为:" << F << '\t';
cout << "出现6的次数为:" << G << '\t';
cout << "出现7的次数为:" << H << '\t';
cout << "出现8的次数为:" << I << '\t';
cout << "出现9的次数为:" << L << endl;
}

int main()
{
int a[10],j;
for(j=0;j<10;j++)
{
cin >> a[j];
}
xunzhao(a);
return 0;
}

switch()里面包含多个参数,按照从右原则,会先判断最后边的参数,判断完进入case后,执行break会跳出,所以你的程序只能统计整数末位数字0、1、…、9各出现的次数。这里你需要再设计一下。
另外,当三位数时,提取10位数字的e=(a[i]%100)/10是不正确的,应该为e=(a[i]/10)%10;

你好,题主,说实话我没看懂你的代码什么意思,但是我在你的代码上修改了一下,希望对你有帮助,不同的人想法也不同哦,望采纳

#include<iostream>
using namespace std;
void xunzhao(int a[])
{
    int i, n , b, c, d, e, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, L = 0;
    for (i = 0; i < 10; i++)
    {
        n = a[i];
        b = n % 10;
        switch (b)
        {
        case 0:A++; break;
        case 1:B++; break;
        case 2:C++; break;
        case 3:D++; break;
        case 4:E++; break;
        case 5:F++; break;
        case 6:G++; break;
        case 7:H++; break;
        case 8:I++; break;
        case 9:L++; break;
        }
    }
    for (i = 0; i < 10; i++)
    {
        n = a[i];
        c = n / 10 % 10;
        switch (c)
        {
        case 0:A++; break;
        case 1:B++; break;
        case 2:C++; break;
        case 3:D++; break;
        case 4:E++; break;
        case 5:F++; break;
        case 6:G++; break;
        case 7:H++; break;
        case 8:I++; break;
        case 9:L++; break;
        }
    }
    for (i = 0; i < 10; i++)
    {
        n = a[i];
        d = n / 100;
        switch (d)
        {
        case 0:A++; break;
        case 1:B++; break;
        case 2:C++; break;
        case 3:D++; break;
        case 4:E++; break;
        case 5:F++; break;
        case 6:G++; break;
        case 7:H++; break;
        case 8:I++; break;
        case 9:L++; break;
        }
    }
    cout << "出现0的次数为:" << A << '\t';
    cout << "出现1的次数为:" << B << '\t';
    cout << "出现2的次数为:" << C << '\t';
    cout << "出现3的次数为:" << D << '\t';
    cout << "出现4的次数为:" << E << '\t';
    cout << "出现5的次数为:" << F << '\t';
    cout << "出现6的次数为:" << G << '\t';
    cout << "出现7的次数为:" << H << '\t';
    cout << "出现8的次数为:" << I << '\t';
    cout << "出现9的次数为:" << L << endl;
}
int main()
{
    int a[10], j;
    cout << "请输入十个三位整数:";
    for (j = 0; j < 10; j++)
    {
        cin >> a[j];
    }
    xunzhao(a);
    return 0;
}