應該沒有很難....吧
我想在這裡預祝我們學妹班排獲勝
struct 名字a{
//你所需要的型別
//ex
int ineed;
char uhu;
}變數名稱; //;很重要!
int main(){
名字a 變數名稱;
//呼叫
變數名稱.ineed;
變數名稱.uhu;
}題目說明:
輸入一個n代表接下來會有幾個字串
請判斷以下幾個句子內出現了哪些字母,分別出現幾次,並以出現次數排列,若次數一致則按照字母順序排列
題目來源:
//宣告
int n;
int c[26];//各字母出現次數
string s;
//歸0
memset(c,0,sizeof(c));//將陣列c從0歸零至26(陣列的大小)//輸入與計算字母出現次數
cin>>n;
cin.ignore();//忽略輸入n後的換行
for(int i=0;i<n;i++){
getline(cin,s);//持續輸入直到換行
for(int j=0,len=s.length();j<len;j++){
if(isalpha(s[j])){
c[toupper(s[j])-'A']++;
}
}
}
語法補充: isalpha(x)判斷其是否為字元
toupper(x)將字元由小寫轉為大寫
//利用struct統計字元的ascii碼與出現次數
struct node{
int ascii;
int count;
}Node[26];
//將有出現過的字母以及次數存入Node[]
int k=0; //紀錄總共出現了幾個不同的字元
for(int i=0;i<26;i++){
if(c[i]>0){ //如果那個字元有出現過則執行
Node[k].ascii=i+'A';
Node[k].count=c[i];
k++;
}
}
//將Node[]裡的資料排序
sort(Node,Node+k,com);
//排序無法排序自訂意函式的陣列,故需要自定義排列方法
//排列方法
bool com(node a, node b){
if(a.count == b.count) return b.ascii > a.ascii;
else return a.count > b.count;
}型別 函式名稱(放入資料的型別 放入函式的名稱 //用逗點隔開){
//函式內容
return 函式名稱(欲放入的內容);
}題目說明:
每次輸入一個整數N,輸入次數不限
當N為0則跳出
f91的規則為下:
若N>100則回傳N-10
若N<=100則回傳f91(f91(N+11))
並請輸出N所對應之值為和
題目來源:
主函式內容
int main(){
int in;
while(cin>>in){
if(in==0) break;
cout<<f91(in)<<endl;
}
return 0;
}f91函式
int f91(int n){
if(n>100){
return n-10;
}
else{
return f91(f91(n+11));
}
}if find 53
題目說明:
有一個公會總共有N個成員,每個有不同編號,並按照順序排列,接下來會問Q次,請查出其詢問之編號是否在此工會內
題目來源:
//預設mid=n/2
if(num[mid]<find){
left=mid+1;
}
else if(num[mid]>find){
right=mid-1;
}
mid=(right+left)/2;
//藉由左右端點改變mid的值利用改變左端點與右端點的找到是否有該值