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;		
}

在这里插入图片描述
第二题 文件操作题
将第一题的源代码保存为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;
}

在这里插入图片描述

发布了63 篇原创文章 · 获赞 6 · 访问量 2006

猜你喜欢

转载自blog.csdn.net/qq_36684096/article/details/105004420
今日推荐