第一題
關于梅森素數。所謂梅森數,是指形如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;
}