天天看點

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計算機機試題