腾讯笔试题:输入一串数字,长度不固定,数字间空格隔开,求每个数字出现的次数

求解决,看看我代码哪里出问题

#include <iostream>
using namespace std;

 //输入一串数字,长度不固定,数字间空格隔开,求每个数字出现的次数,每行用n(m)形式输出,n为不同的数,m为n出现的次数 

int main(int argc, char *argv[]) {  //问题 :只能输出第一个数的出现次数 
    typedef struct str{
       int a;
       int b; 
    };
    str str1[100];
    int n=0;
    int test[100];
    int k=1;
    int flag=1;   
    while(cin.get()!='\n'){     //问题 每次输入数据都会少掉第一个字符 输入时加空格则不会出现此问题,求解决方案 
                cin>>test[n];
                n++;    
    }

     for(int i=0;i<100;i++){
          str1[i].a=0;
          str1[i].b=0;
    }
    str1[0].a=test[0];
     str1[0].b=0;
    for(int i=0;i<n;i++){   // 2 2 3 4 5  2 3
        for(int j=0;j<k;j++)
          {
            if(test[i]==str1[j].a){
                str1[j].b++;
                flag=1; 
            }   
          }
        if(flag!=1){ 
                str1[k].a=test[i];
                str1[k].b=1;
                k++;
                flag=1;
        }
    }

    for(int i=0;i<k;i++){
         cout<<str1[i].a<<'(';
         cout<<str1[i].b<<')'<<endl;
    }

    return 0;
}

int main(int argc, char *argv[]) { //问题 :只能输出第一个数的出现次数
typedef struct str{
int a;
int b;
};
str str1[100];
int n=0;
int test[100];
int k=1;
int flag=1;

while(cin.get()!='\n'){ //问题 每次输入数据都会少掉第一个字符 输入时加空格则不会出现此问题,求解决方案
cin>>test[n];
n++;

}

 for(int i=0;i<n;i++){
      str1[i].a=test[i];
      str1[i].b=0;
}
for(int i=0;i<n;i++){  // 2 2 3 4 5 2 3
    flag=1;
        for(int k=0;k<i;k++)
          if(str1[k].a==str1[i].a) 
          {flag=0;break;}
      if(flag!=0)
          for(int j=0;j<n;j++)
        {
          if(test[j]==str1[i].a)
              str1[i].b++; 
         }
}

for(int i=0;i<n;i++){
    if(str1[i].b!=0)
   {  cout<<str1[i].a<<'(';
     cout<<str1[i].b<<')'<<endl;
}
}
system("pause");
return 0;

}

int main(int argc, char *argv[]) { //问题 :只能输出第一个数的出现次数
typedef struct str{
char a;
int b;
};
str str1[100];
int n=0;
char test[100];
int k=1;
int flag=1;
char e;
do{
test[n]=cin.get();
n++;
e=getchar();
}
while(e!='\n');
for(int i=0;i<n;i++){
str1[i].a=test[i];
str1[i].b=0;
}
for(int i=0;i<n;i++){ // 2 2 3 4 5 2 3
flag=1;
for(int k=0;k<i;k++)
if(str1[k].a==str1[i].a)
{flag=0;break;}
if(flag!=0)
for(int j=0;j<n;j++)
{
if(test[j]==str1[i].a)
str1[i].b++;
}
}

for(int i=0;i<n;i++){
    if(str1[i].b!=0)
   {  cout<<str1[i].a<<'(';
     cout<<str1[i].b<<')'<<endl;
}
}
system("pause");
return 0;

}
刚刚没注意到第一个问题。这是最终版