北京理工大学2000-2012考研计算机复试上机题详尽处理(13)

本站小编 福瑞考研网/2017-04-25


    map<string, combined> map_si;
    int i, sym_cnt[2]={0,0};

    cout<<"请输入一个英文句子:"<<endl;
    cin.getline(txtline, 1023);

    // count ',' & '.'
    p=txtline;
    while(*p){
        for(i=0; i<2; i++){
            if(*p==*symbols[i]){
                map_si[(string)symbols[i]].cnt++;
                map_si[(string)symbols[i]].str = symbols[i];
                break;
            }
        }
        p++;
    }

    // split sentence into words
    p = strtok(txtline, delimit); 
    while(p) { 
        map_si[(string)p].cnt++;
        map_si[(string)p].str = p;    //如果要不区分大小写,可以用strlwr之类的方法忽略大小写
        p = strtok(NULL,delimit); 
    }

    // prepare for sort
    map<string, combined>::iterator iter;
    vector<combined> sort_obj;
    iter = map_si.begin();
    while (iter != map_si.end())
        sort_obj.push_back((iter++)->second);

    sort(sort_obj.begin(), sort_obj.end(), cmp);

    // output result
    cout<<"统计结果如下:"<<endl;
    for (i = 0; i < sort_obj.size(); i++)
        cout << sort_obj[i].str<< " \t" <<sort_obj[i].cnt << endl;

    return 0;
}

bool cmp(combined i1, combined i2){
    return i1.cnt > i2.cnt;
}
算法二:
#include<iostream>
#include<string>

using namespace std;
struct word
{
    string w;
    int n;
    int flag;
};
void handle(word str[]);
void stat(word str[],word sum[]);
void sort(word sum[]);
void output(word sum[]);
int words;
main()
{
word str[1000],sum[100];
    handle(str);
    stat(str,sum);
    sort(sum);
    output(sum);
}

void handle(word str[1000])
{
    char ch,s[10];
    int i,j;
    i=0;
    j=0;

    while((ch=cin.get())!='\n')
    {
        if((ch!=' ' )&&( ch!=',' )&&( ch!='.'))
            s[i++]=ch;
        else
        {
            s[i]='\0';
            str[j].w=s;
            str[j].n=1;
            str[j].flag=0;
            j++;
            i=0;
               strcpy(s,"");
        }
    }
    str[j++].w=s;
    words=j;
}

void stat(word str[1000],word sum[1000])
{
    int i,j,k;
    j=0;
    k=0;
    for(i=0;i<words;i++)
    {
        if(str[i].w!="" && str[i].flag==0)
        {
            str[i].flag=2;
            for(j=i+1;j<words;j++)
            {
                if(str[j].w==str[i].w)
                {
                    str[i].n++;
                    str[j].flag=1;
                }
            }
        }
    }
        for(i=0;i<words;i++)
            if(str[i].flag==2)
                sum[k++]=str[i];
            words=k;
}

void sort(word sum[])
{
    int i,j;
    word t;
    for(i=0;i<words-1;i++)
        for(j=0;j<words-i;j++)
            if(sum[j].n<sum[j+1].n)
            {
                t=sum[j];
                sum[j]=sum[j+1];
                sum[j+1]=t;
            }
}

void output(word sum[])
{
    for(int i=0;i<words;i++)
        cout<<sum[i].w<<" "<<sum[i].n<<endl;
}
或者:
#include<iostream>
#include<map>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    string s;
    getline(cin, s);
    int i = 0;
    int flag = 0;
    int st = -1, ed = -1;
    map<string, int> m;
    string str;
    while (s[i] != '\0')
    {
        if (s[i] >= 'a'&&s[i] <= 'z' || s[i] >= 'A'&&s[i] <= 'Z')
        {
            if (flag == 0)   //mean the last word is end
            {
                st = i;  //the location of a new word
                flag = 1;
            }       
        }
        if (s[i] == ' ' || s[i] == ',' || s[i] == '.')
        {
            if (flag == 1)
            {
                ed = i - 1;  //the location of the ending of a word
                str = s.substr(st, ed - st + 1);
                m[str]++;
                flag = 0;
                st = -1;  //just for the follow "if(st!=-1)"
            }
               
        }
        i++;
    }
    if (st != -1)   //if sentence is not end of ".'
    {
        str = s.substr(st, s.length() - st);
        m[str]++;
    }


    map<string, int>::iterator it;     //map sort seem cannot use sort of STL.
    while (!m.empty())
    {
        map<string, int>::iterator max;

相关话题/计算机

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 电子科技大学820计算机复试自己编写C复试答案
    1、单链表逆序(考频:5次)不用输入就在函数内生成 函数内生成数据如下: Head=malloc(sizeof(struct LNode)); Head-next=NULL; For(i=5;i=0;i--) { P=malloc(sizeof(struct LNode)); P-val=i; P-next=head- Head-next=p;//头插法建立数据 } #include stdio.h #includemalloc ...
    本站小编 福瑞考研网 2017-04-22
  • 武汉理工大学材料学院考研复试答案(专业课+计算机基础)
    武汉理工大学材料学院考研复试答案总结 1、材料科学与工程的定义及特点。 材料科学与工程就是研究有关材料组成, 结构, 制备工艺流程与材料性能与用途之间关系的产生和应用的学科。材料科学与工程的特点: (1)多学科交叉。材料科学与工程具有与物理学,化学,冶金学,金属学,陶瓷学,计算数学等互相融合和交叉的结果. (2)具 ...
    本站小编 福瑞考研网 2017-04-22
  • 2016大连理工大学计算机组成原理期末考试试卷
    本站小编 福瑞考研网 2017-04-19
  • 东北大学2017计算机考研复试回忆考研真题
    东北大学2017考研计算机复试笔试回忆 第一部分:数据库(30分) 多选题 1, 2,安全控制什么的(记不清了) 3,读脏数据的情况是() 4,事物的原子性是指() 设计题 一个公司有多个生产厂家,多个生产厂家生产一款产品,一家成产长家生产数款产品。现在该公司想设计一个数据库管理helli ...
    本站小编 福瑞考研网 2017-04-12
  • 重庆大学2013年计算机复试考研题目
    2013重大C上机试题 1.(25)输出5位以内的对称素数 2.(35)有一个天平,有六种砝码,分别重1,2,3,5,10,20克,每种砝码各有5,3,2,2,1,1个,计算天平能称出的重量及种类 3.(40&)输入n个由0和1组成的字符串(n由用户输入),规定字符串的比较规则如下: a.字符串长的比较大 ...
    本站小编 福瑞考研网 2017-04-09
  • 天津大学计算机学院非全日制2017考研调剂信息发布
      根据计算机学院2017年招生指标及硕士研究生报考情况,计算机学院2017年接收校内外非全日制硕士研究生调剂考生,欢迎全国优秀考生调剂到计算机学院攻读硕士学位研究生。  一、基本条件  我院非全日制专业学位(领域)研究生接收院内、校内、校外调剂。调剂基本条件为:考生第一志愿报考专业成绩须达到我校对应学科复试 ...
    本站小编 福瑞考研网 2017-04-02
  • 安徽大学考研复试计算机组成原理考研真题
    安徽大学 《计算机组成与结构 》考试试题参考答案及评分标准 一、选择题(每小空1分,共10分) 1. 超前进位加法电路引入的进位产生函数Gi=(D)。 A.XiYi B.XiYi C.(XiYi)XiYi D.XiYi 2. 下述 (A)属于时序逻辑电路。 A.触发器 B.译码器 C.数据选择器 D.加 ...
    本站小编 福瑞考研网 2017-03-26
  • 2017泰晤士英国大学排名计算机科学专业英国大学榜单
      2017年泰晤士报英国大学排名出炉,以下为您带来2017年泰晤士报英国大学排名计算机科学专业英国大学榜单,希望2017年泰晤士报英国大学排名计算机科学专业英国大学榜单能够对您的英国留学选校提供一定的帮助。 以下就是2017泰晤士英国大学排名计算机科学专业英国大学榜单 专业排名 综 ...
    本站小编 福瑞考研网 2017-03-25
  • 2018年USNews美国大学研究生专业排名计算机科学专业排名
    2018年USNews美国大学研究生专业排名计算机科学专业排名于2017年3月14日正式发布。此次美国大学研究生专业排名同样基于商业、教育、工程、医学、法律和护理等六大专业;当然,其中包含了六大类专业中的各个具体专业排名。 据USNews官方介绍,2018年USNews美国大学研究生专业排名计算机科学专业排名 ...
    本站小编 福瑞考研网 2017-03-19
  • 2018年USNews美国大学研究生专业排名计算机工程专业排名
    2018年USNews美国大学研究生专业排名计算机工程专业排名
    2018年USNews美国大学研究生专业排名计算机工程专业排名于2017年3月14日正式发布。此次美国大学研究生专业排名同样基于商业、教育、工程、医学、法律和护理等六大专业;当然,其中包含了六大类专业中的各个具体专业排名。 据USNews官方介绍,2018年USNews美国大学研究生专业排名计算机工程专业排 ...
    本站小编 福瑞考研网 2017-03-19
  • 常同学成功申请萨省大学计算机科学专业本科
      常同学,在鑫泉留学精英团队的帮助下,在无语言成绩的情况下,被萨省大学计算机科学专业录取。今天给大家分享一下常同学之所以能成功申请萨省大学计算机科学本科的申请解析!希望通过这个案例可以给与常同学申请条件类似的同学们提供申请方面的参考!  萨省大学计算机科学专业本科成功案例分享:   学生姓名:常同 ...
    本站小编 免费考研网 2017-03-19
  • 曼彻斯特大学计算机系统工程硕士申请案例分享
    曼彻斯特大学计算机系统工程硕士申请条件是什么?以下是杨同学的真实申请案例:他毕业于西北工业大学物联网工程专业,申请时无语言成绩,GPA78,在鑫泉留学的帮助下成功申请了曼彻斯特大学的计算机系统工程硕士。  曼彻斯特大学计算机系统工程硕士申请条件  GPA 75%, 雅思总分6.5(单项不低6.0)  ...
    本站小编 免费考研网 2017-03-19
  • 特拉华大学电气与计算机工程专业硕士申请案例解读
      孙同学,在鑫泉留学团队的帮助下,以GPA2.7,托福97,GRE309的成绩,被特拉华大学电气与计算机工程专业硕士录取。今天跟大家分享一下孙同学特拉华大学电气与计算机工程专业硕士录取过程全解读!希望通过这个案例可以给与孙同学申请条件类似的同学们提供申请方面的参考!  特拉华大学电气与计算机工程专 ...
    本站小编 免费考研网 2017-03-19
  • 罗格斯大学计算机科学专业硕士申请成功案例分享
      马同学,在鑫泉留学团队的帮助下,以GPA2.9,托福98,GRE321的成绩,成功被罗格斯大学计算机科学专业硕士录取。今天跟大家分享一下马同学罗格斯大学计算机科学专业硕士录取过程全解读!希望通过这个案例可以给与马同学申请背景相仿的同学提供美国硕士申请方面的参考!  罗格斯大学计算机科学专业硕士申 ...
    本站小编 免费考研网 2017-03-19
  • 惠灵顿维多利亚大学电子计算机系统硕士申请案例
      惠灵顿维多利亚大学电子计算机系统硕士申请实战分析:毛同学毕业于中国矿业大学徐海学院自动化专业,雅思成绩仅有5.0,不过平均分高达82,在鑫泉留学的帮助下搭配语言课程顺利被惠灵顿维多利亚大学电子计算机系统硕士录取。  惠灵顿维多利亚大学电子计算机系统硕士申请条件:  雅思成绩 6.5 (6.0)  ...
    本站小编 免费考研网 2017-03-19