c++如何巧妙变为c,青高收捷达

题目链接
http://t.csdn.cn/DifhX

#include<iostream>
#include<algorithm>
using namespace std;
struct g {
    string name;
    int cnt;
};
bool cmp(g a,g b){
    return a.name<b.name;
}
int main() {
    string s;
    g q[101];
    int f=0;
    while(cin>>s){
        int k=0;
        for(int i=0;i<s.size();i++){
            if(s[i]!=0){
                int d=1;
                for(int j=i+1;j<s.size();j++){
                    if(s[i]==s[j]){
                        d++;
                        s[j]=0;
                    }
                }
                q[k].cnt=d;
                q[k].name=s[i];
                k++;
            }
        }
        sort(q,q+k,cmp);
        if(f!=0)cout<<endl;
        for(int i=0;i<k;i++)cout<<q[i].name<<" "<<q[i].cnt<<endl;
        f++;
    }
    return 0;
}

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

typedef struct
{
    char name;
    int cnt;
}g;

int cmp(const g *a, const g *b)
{
    return a->name > b->name;
}
int main()
{
    char s[100];
    g q[101];
    int f=0,len;

    while(1)
    {
        scanf("%s",s);
        len=strlen(s);

        if(len==1)break;

        int k=0;

        for(int i=0; i<len; i++)
        {
            if(s[i]!=0)
            {
                int d=1;

                for(int j=i+1; j<len; j++)
                {
                    if(s[i]==s[j])
                    {
                        d++;
                        s[j]=0;
                    }
                }

                q[k].cnt=d;
                q[k].name=s[i];
                k++;
            }
        }

        //sort(q,q+k,cmp);
        qsort(q,k,sizeof(g),cmp);

        if(f!=0)printf("\n");

        for(int i=0; i<k; i++)
            //cout<<q[i].name<<" "<<q[i].cnt<<endl;
            printf("%c %d\n",q[i].name,q[i].cnt);

        f++;
    }

    return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
typedef struct
{
    char name;
    int cnt;
}g;
 
int cmp (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}
int main()
{
    char s[100];
    g q[101];
    int f=0,len;
 
    while(1)
    {
        scanf("%s",s);
        len=strlen(s);
 
        if(len==1)break;
 
        int k=0;
 
        for(int i=0; i<len; i++)
        {
            if(s[i]!=0)
            {
                int d=1;
 
                for(int j=i+1; j<len; j++)
                {
                    if(s[i]==s[j])
                    {
                        d++;
                        s[j]=0;
                    }
                }
 
                q[k].cnt=d;
                q[k].name=s[i];
                k++;
            }
        }
 
        
        qsort(q,k,sizeof(g),cmp);
 
        if(f!=0)printf("\n");
 
        for(int i=0; i<k; i++)
            printf("%c %d\n",q[i].name,q[i].cnt);
 
        f++;
    }
 
    return 0;
}