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的返回值,在这里困了差不多半个小时。

相关文章
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
258 3
|
2月前
|
API Python
Python采集淘宝店铺所有商品API接口指南
淘宝没有公开的官方API供采集店铺商品数据,但可以通过以下几种方法获取商品信息。需要注意的是,淘宝有严格的反爬机制,直接采集可能违反其服务条款。
|
6月前
|
人工智能 API UED
即刻拥有DeepSeek-R1满血版
阿里云推出基于R1满血版DeepSeek的AI解决方案,助您高效学习与工作!访问专属链接进入详情页,按指引免费体验。具体步骤包括:注册阿里云账号、开通百炼模型服务、获取API-KEY、配置Chatbox客户端并测试对话功能。通过简单操作,即可调用DeepSeek-R1模型,实现智能化交互。快速上手,开启AI新体验!
290 7
|
6月前
|
JSON 数据挖掘 API
深入研究:1688店铺所有商品API详解
在电商业务中,获取1688店铺商品信息对于数据分析和竞品调研至关重要。由于1688官方未提供通用API,可借助第三方数据服务平台实现自动化采集。通过注册账号获取API Key,调用接口并传入店铺ID、页码等参数,即可返回商品标题、价格、销量等JSON格式数据。文中提供了Python示例代码,帮助用户快速上手,注意根据具体平台调整API地址与参数要求。
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
本文将介绍阿里云如何将 Serverless 架构应用于消息队列,有效降低运营成本,同时利用云原生环境的特性,为 IoT 设备提供快速响应和灵活伸缩的通讯能力。
449 135
|
10月前
|
安全 项目管理
销售易对决红圈:CRM系统全方位比较与企业选择指南
本文对比分析了销售易和红圈两大国内领先的CRM解决方案。销售易以全球领先的产品能力和全面的营销销售流程管理著称,深受500强企业信赖;红圈则以其专业的客户服务和丰富的项目管理经验见长,特别适合工程项目管理。两者各具优势,企业可根据自身需求选择最合适的CRM系统。
|
12月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
178 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
自然语言处理 安全 测试技术
CodeGeeX高级功能
【8月更文挑战第30天】CodeGeeX高级功能
406 6
|
安全 数据安全/隐私保护 虚拟化
win11家庭版怎么升级专业版
Windows 11家庭版用户常需升级到专业版以解锁远程桌面、组策略和BitLocker等高级功能。在升级前,备份数据、确保系统更新至最新。购买正版密钥后,通过“设置”-&gt;“系统”-&gt;“激活”输入密钥进行升级。遵循提示完成升级过程,系统会自动应用专业版特性。如有问题,参考官方文档或寻求技术支持。
win11家庭版怎么升级专业版
|
SQL 机器学习/深度学习 人工智能
LLM系列 | 14: 实测OpenAI函数调用功能:以数据库问答为例
今天这篇小作文以数据库问答(Text2SQL)为例进一步介绍ChatGPT的函数调用。本文将介绍如何将模型生成的结果输入到自定义的函数中,并利用该功能实现数据库问答功能。
LLM系列 | 14: 实测OpenAI函数调用功能:以数据库问答为例