CSDN第53期全题目分析

首先就是三道选择题和一道判断题
1.冯·诺伊曼体系结构最具革命性的意义在哪里?
A、软硬件分离
B、促使计算机从电子管时代进入了晶体管时代
C、提高了晶体管计算机的运算速度
D、发明了集成电路
正确答案: C
2. 以下哪一项不是高德纳(Donald E. Knuth)的功绩或贡献?
A、撰写和出版了《计算机程序设计艺术》,并因此成为截至目前(2022年)最年轻的图灵奖
获奖者
B、提出了算法的量化评估标准,被公认为算法分析的鼻祖
C、编写了UNIX操作系统的首版
D、编写了排版软件TeX
正确答案: B
3. 以下哪一位没有参与ENIAC(Electronic Numerical Integrator and Computer,电子数值积分计算机)的研制?
A、约翰·莫奇利(
John Mauchly)
B、约翰·列侬(
John Lennon)
C、约翰·皮斯普·埃克特(
J. Presper Eckert)
D、约翰·冯·诺伊曼(
John von Neumann)
正确答案: A
1. EDVAC(Electronic Discrete Variable Automatic Computer,离散变量自动电子计算机)是世界上第一台程序控制的通用
电子计算机。
A、对
B、错

正确答案:A

接着就是两道编程题

两道编程题的难度不高,但就是难以拿全满(本人第一道就错了两个)

第一道

题目名称:贝博士外星信号统计
贝博士最近收到了一些来自外星的信号,它们看起来是一些字符。经过贝博士的转码,把这些字符用26个小写拉丁字母表示。 贝博士叫来了助手艾小姐,请她把这些字母中出现次数最多者挑出来,并按字母表顺序排列出来(忽略空格)。

输入样式是一串仅有空格和小写字母的字符串

输出是按字母表顺序打印出现频率最高的字母

本人的思路先创建一个整形数字,分别统计每个字母的出现次数。

具体实现:

​
#include<iostream>
#include<vector>
using namespace std;
int main(){
string str;
getline(cin,str);
vector<int> vec(26,0);
int count = 0;
for(char a:str){
if(a!=' '){
++vec[a-97];
count = vec[a-97]>count?vec[a-97]:count;
}
}
if(count == 0){
return 0;
}
for(int i = 0;i < 26;++i){
if(vec[i] == count){
char b = i+97;
cout<<b;
}
}
return 0;
}

​

第二题

2、题目名称:等差数列
给定一已排序的正整数组成的数组,求需要在中间至少插入多少个数才能将其补全成为一等差数列。 “在中间插入”的意思是:不能在第一个数之前,或最后一个数之后插入数。

这道题的本质就是求最小公因数,先把两个数的差存入数组中,然后再对各个差求最小公因数,这其中需要注意的点是差值可能出现0,出现0时,最小公因数应该为0,不然按正常求法会报错,求出最小公因数之后,在用每个差除以这个最小公因数减去一再依次加起来。

具体实现:


#include<iostream>
#include<vector>
using namespace std;
int judge(int a,int b){
if(a==0||b == 0){
return 0;
}
int k = a<b?a:b;
for(int i = k;i >=2;--i){
if(a%i==0&&b%i==0){
return i;
}
}
return 1;
}
int main(){
vector<int> vec;
int a,b = 0,arr = 1;
while(cin>>a){
vec.push_back(a-b);
b = a;
}
if(vec.size()<=2){
cout<<0;
return 0}
for(int i = 1;i < vec.size();++i){
if(vec[i]!=0){
if(i == vec.size()-1){
cout<<"NaN";
return 0;
}
break;
}
else if(i == vec.size()-1){
cout<<0;
return 0;
}
}
int compa = vec[1];
for(int i = 2;i < vec.size();++i){
arr = judge(vec[i],compa);
compa = arr;
if(arr == 0){
cout<<"NaN";
return 0;
}
}
int sum=0;
for(int i = 1;i < vec.size();++i){
sum+=vec[i]/arr-1;
}
cout<<sum;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值