2018年华科计算机学院机试题

简介: 2018年华科计算机学院机试题

从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间由若干个空格隔开,

英文单词由大小写字母组成,编程完成下列任务:

(1)统计并输出此句子中英文字母的个数; (10 分)

(2)统计并输出此句子中单词的个数; (10 分)

(3)查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)和次数。当出现最多的字符不止一个时,都能找到,并输出找到的所有字母及次数。(输出字母时大小写均可) (20 分)

例如,输入句子:This is An Pencil Case

则输出为:

字母个数:18

单词个数:5

最多的字母:i,s

出现的次数:3

解:统计个数在遍历中进行,统计单词也在遍历中进行,最后统计次数采用hash的思想进行。

#include<iostream>
#include<string> 
using namespace std;
int hash[26]={0};//hash数组统计单词出现次数
int main(){
  string str;
  getline(cin,str);
  int letter=0,word=0,num=0;
  for(int i=0;i<str.size();i++){
    int k=str[i]-'a',m=str[i]-'A';
    if((0<=k&&k<=26)||(0<=m&&m<=26)){
      if(i==0||str[i-1]==' '){ //判断是否是单词开始 
        letter++;
        word++;
      }
         else letter++;
         if(0<=k&&k<=26){  //统计次数,更新最大次数 
       hash[k]++;
       if(num<hash[k])
       num=hash[k];
       }
         else {
           hash[m]++;
       if(num<hash[m])
       num=hash[m];
       }
    } 
  }
  cout<<"字母个数:"<<letter<<endl;
  cout<<"单词个数:" <<word<<endl; 
  cout<<"最多的字母:"; 
  for(int i=0;i<26;i++)
  if(hash[i]==num){
  char c=i+'a' ;
  cout<<c<<" ";
        }
    cout<<endl;
    cout<<"出现的次数:"<<num<<endl; 
  return 0;
} 

运行结果

1685017473331.jpg

十二进制是数学中一种以 12 为底数的计数系统,它由 0~9,a,b 组成,与十进制的队友关系是:0~9 对应 0~9,a 对应 10,b 对应 11。例如,十二进制的 a2,十进制是 122。输入一个仅含十二进制数字的字符串(字母一律小写,不超过 8 个字符),完成下列任务:

(1)输出该十二进制数每一位对应的十进制数(从高位到低位顺序输出,空格隔开);

(2)实现“十二进制”转“十进制”算法,输出该十二进制数对应的十进制数;

(3)输出转换后的十进制数在内存中的每个二进制位(共 4 字节,每字节之间空格隔开)。

例如,输入十二进制数:a2

则输出为:

10 2

122

00000000 00000000 00000000 01111010

思路:前两个问题简单,最后一个问题可以建立起一个空间为32的数组存储10进制转换为2进制的数字。

using namespace std;
int num[8];//存储每个字符对应12进制大小
int a[33]={0};//存储二进制数
int main(){
  string str;
  getline(cin,str);
  for(int i=0;i<str.size();i++) //将字符转化为对应大小 
  {
    if(str[i]=='a')num[i]=10;
    else if(str[i]=='b')num[i]=11;
    else num[i]=str[i]-'0';
  }
  int sum=0;
  for(int i=0;i<str.size();i++){ //1,2 问 
    sum=sum*12+num[i];
    cout<<num[i]<<" ";
  }
  cout<<endl<<sum<<endl;
  int k;
  for(int i=32;sum>0;i--){ //二进制转化 
    a[i]=sum%2;
    sum=sum/2;
  }
  for(int i=1;i<=32;i++)
  {
    cout<<a[i] ;
    if(i%8==0)cout<<" ";
  } 
  cout<<endl;
  return 0; 
} 

运行结果:

1685017504434.jpg

1685017513577.jpg

题目如上所述。

这里复杂在小数部分的处理,如何处理判断循环节,我们需要手动模拟 除法求小数的过程。这里利用map来标记循环节出现的位置。

#include<iostream>
#include<map>
using namespace std;
int a[101];//用来储存小数部分 
map<int,int>b;// 用来标识循环节和起始位置 
void generatep(int n,int d)
{
  b.clear();
int k=n/d,tag=1;//保存整数部分
int mod=n%d;//小数部分 
int s=0,e;//记录循环节起始位置 
for(int i=0;mod;i++) 
{   
  mod=mod*10; 
  if(b[mod]){ //起始位置需要手动判断 因为key值不存在返回0 
  tag=0;
  s=b[mod];
  break;
  }
  if(mod/d==a[0]) {//判断循环节是否在开始位置
    s=0;
    tag=0;
    break;
  }
  a[i]=mod/d;
  b[mod]=i;
  mod=mod%d;
  e=i;
} 
if(!tag){
  cout<<k<<".";
  for(int i=0;i<s;i++)
  cout<<a[i];
  cout<<"(";
  for(int i=s;i<=e;i++)
  cout<<a[i];
  cout<<")"<<endl;
}
else {
  cout<<k<<".";
  for(int i=0;i<=e;i++)
  cout<<a[i];
  cout<<endl;
}
} 
int main(){
  int n,d;
  for(int i=0;i<3;i++)
  {
    scanf("%d/%d",&n,&d);
    generatep(n,d);
  }
}

1685017539282.jpg

这里指得注意的是map的返回值,在这里困了差不多半个小时。

相关文章
|
3月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
5月前
|
数据采集 测试技术 API
小白必看!电商 API 开发避坑指南:签名错误、权限申请全解决
本文总结电商API开发常见问题与解决方案,涵盖京东、淘宝、拼多多的签名规则、权限申请、频率限制等核心踩坑点,结合实战案例,助你高效避坑,提升开发效率90%。
|
3月前
|
人工智能 安全 算法
《AI工具驱动的分布式任务调度系统从0到1实践解析》
本文记录“星尘调度系统”开发中,GitHub Copilot与Snyk两款AI工具的全链路协同实践。面对分布式任务调度的架构设计、算法实现、故障容错等难点,Copilot提供架构方案对比、核心代码生成及前后端协同设计,Snyk则完成故障模拟、依赖安全扫描与风险修复。开发中以“需求具象化”为前提,坚守“人控核心决策、AI补位非核心工作”分工,开发者补充业务隐性需求、校验AI输出并优化细节。最终6周完成原3个月开发目标,系统支持每秒10万级任务调度,故障重试成功率100%。
157 0
|
4月前
|
API Python
Python采集淘宝店铺所有商品API接口指南
淘宝没有公开的官方API供采集店铺商品数据,但可以通过以下几种方法获取商品信息。需要注意的是,淘宝有严格的反爬机制,直接采集可能违反其服务条款。
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
本文将介绍阿里云如何将 Serverless 架构应用于消息队列,有效降低运营成本,同时利用云原生环境的特性,为 IoT 设备提供快速响应和灵活伸缩的通讯能力。
511 114
|
安全 项目管理
销售易对决红圈:CRM系统全方位比较与企业选择指南
本文对比分析了销售易和红圈两大国内领先的CRM解决方案。销售易以全球领先的产品能力和全面的营销销售流程管理著称,深受500强企业信赖;红圈则以其专业的客户服务和丰富的项目管理经验见长,特别适合工程项目管理。两者各具优势,企业可根据自身需求选择最合适的CRM系统。
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
246 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
自然语言处理 安全 测试技术
CodeGeeX高级功能
【8月更文挑战第30天】CodeGeeX高级功能
530 6
|
监控 前端开发 JavaScript
async/await:使用同步的方式去写异步代码
async/await:使用同步的方式去写异步代码
247 1
|
小程序
小程序如何刷新当前页面
小程序如何刷新当前页面
668 0