天天看点

2019年华科834计算机机试题

第一题

关于梅森素数。所谓梅森数,是指形如2^p-1的一类数,其中指数p是素数,常记为M(p)。如果p是素数的同时,梅森数(即2^p-1)也是素数,就称这个梅森数为梅森素数。输入一个长整型数n,输出不大于它的所有梅森素数。
           

例:输入:1000

输出:

M(2)=3

M(3)=7

M(5)=31

M(7)=127

分析:写一个判断一个数是不是素数的函数调用即可

#include<iostream>
#include<cmath> 
using namespace std;

bool judge(int n){
	if(n==1)return false;
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)return false;
	}
	return true;
}

int main(){
	int n;
	cin>>n;
	for(int i=2;pow(2,i)-1<=n;i++)
	{
		if(judge(i)){
			if(judge(pow(2,i)-1))
			{
				cout<<"M("<<i<<")="<<pow(2,i)-1<<endl;
			}	
		}		
	}	
return 0;		
}
           
2019年华科834计算机机试题

第二题 文件操作题

将第一题的源代码保存为abc.c文件,并且要求abc.c文件中有相当数量的注释,包括//和/……/两种形式的注释

(1)读取abc文件的内容,将其显示在控制台上,并为每行代码增加一个符号。(10)

(2)使源代码中的//类型的注释内容不显示在控制台中。(10)

(3)使源代码中的/……/类型的注释内容不显示在控制台中。(10)

分析:这道题我遇我懵,确实是我的知识盲点,说实话华科的机试题目比较简单,但是如果遇到这样的题目就很容易凉,我会在下面单独开一篇文章学习这机试题。

文章衔接:https://blog.csdn.net/qq_36684096/article/details/105089904

第三题 字符串加密题

输入一串由字母组成的字符串,对于字符串中的每个字符,向后偏移2,例如a变成c,y变成a,z变成b,Z->B。

(1)输出加密后的字符串

(2)对于加密后的字符进行奇校验,即其ASCLL码转化成二进制数,在最高位加0或者1,使1的数目为奇数

例如:输入aD

输出:

原文:aD

密文:cF

c 11100011 227

F 01000110 70

分析:简单的字符串处理题目,第一问比较容易,第二问开一个8大小的数组处理记录数据

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int a[8],b[8]={128,64,32,16,8,4,2,1};

int generateit(int n){
	fill(a,a+8,0);
	int k=0,sum=0;//判断奇偶数 
	for(int i=7;n!=0;i--){
		a[i]=n%2;
		if(n%2)k++;
		n=n/2;		
	}
	if(k%2==0){
		a[0]=1;
	}
for(int i=0;i<8;i++){
    cout<<a[i];
   if(a[i])sum+=b[i];}
  return sum; 
}

int main(){
	string str,s;
	getline(cin,str);
	for(int i=0;i<str.size();i++){
		if(str[i]=='y')s+='a';
		else if(str[i]=='z')s+='b';
		else if (str[i]=='Y')s+='A';
		else if(str[i]=='Z')s+='B';
		else s+=(str[i]+2);
	}
	for(int i=0;i<s.size();i++){
		cout<<s[i]<<" ";
		int n=s[i];
		int sum=generateit(n);
		cout<<" "<<sum<<endl;
	}
	return 0;
}
           
2019年华科834计算机机试题