中國礦業大學2020-2021-1高階語言程式設計實驗期末考題
阿新 • • 發佈:2020-12-23
期末測試一:字串處理
題目描述
在一個字串str1中找到所有存在於str2中的字元,並逐一刪除。每刪除一個字元,就按順序從str3中取出一個字元填充刪除的位置。要求在刪除字元時,從str1的頭部開始比較與str2中的元素是否相同,而填充字元時,也從str3的頭部逐一選擇字元填充。當str3不夠長時,迴圈返回到頭部繼續逐一選擇。
輸入
輸入有三行,第一行對應str1,第二行對應str2,第三行對應str3。
輸出
輸出只有一行,是處理過的字串,末尾沒有換行。
樣例輸入
abcdhjkl
hdk
AB
樣例輸出
abcABjAl
AC程式碼示例1(自己的考試後修改結果)
#include<iostream> using namespace std; int len(char str[]) { int l=0; for (int i=0; str[i]; i++) l++; return l; } int main() { char str1[40]; char str2[10]; char str3[10]; cin>>str1>>str2>>str3; int m=0; for (int i=0; str1[i]; i++) { for (int j=0; str2[j]; j++) { if (str1[i]==str2[j]) { m=m%len(str3); //就是這裡!!!考試寫成了str2死活AC不出來!!!結果是abcABj cout<<"m-> "<<m<<" "<<len(str2)<<endl; str1[i]=str3[m]; m++; break; } } } for (int i=0; str1[i]; i++) cout<<str1[i]; return 0; }
AC程式碼示例2:某ZJUer同學現做(似乎沒有用到五分鐘)
#include <stdio.h> #include <string.h> #define MAX 200 int cur,len; char s1[MAX], s2[MAX], s3[MAX], tmp; int main(int argc, char const *argv[]) { scanf("%s",s1); scanf("%s",s2); scanf("%s",s3); len = strlen(s3); for (int i = 0; s1[i]; i++) { tmp = s1[i]; for (int j = 0; s2[j]; j++) { if(tmp == s2[j]){ s1[i] = s3[cur++%len]; break; } } } printf("%s",s1); return 0; }
期末測試二:圖形類
題目描述
一箇中空柱形圖形的截面如下圖陰影部分所示。設計一個圓類,包含半徑資料,以及建構函式,成員賦值函式,面積函式等。再設計一個柱形類,柱形類繼承了圓類,增加高度作為資料成員,增加建構函式,成員賦值函式,底面積函式(返回正方形與圓形面積之差),體積函式(為底面積乘以高度)等。在主函式中輸入圓的半徑及圓柱高度,呼叫柱形類物件的成員賦值函式,輸出柱形物件的底面積與體積。要求:用面向物件實現,使用繼承方法;資料為私有,函式為公有;圓周率值按3.14計算。
輸入
輸入兩個資料,分別代表圓的半徑和圓柱的高度,中間用一個空格隔開。
輸出
輸出兩個資料,分別是柱形物件的底面積與體積,中間用一個空格隔開,末尾沒有換行。
樣例輸入
4.3 5.6
樣例輸出
15.9014 89.0478
考試AC程式碼
#include <iostream>
using namespace std;
class Circle
{
private:
double radius;
public:
Circle():radius(0){}
Circle(double r):radius(r){}
double ShowR() {return radius;}
double Area() {return 3.14*radius*radius;}
};
class Zhu: public Circle
{
private:
double height;
public:
Zhu():height(0){}
Zhu(double r, double h):Circle(r),height(h){}
double BottomArea()
{
double ra=0;
ra=ShowR();
return 4*ra*ra-Area();
}
double Volumn() {return BottomArea()*height;}
};
int main() {
double r,h;
cin>>r>>h;
Zhu z(r,h);
cout<<z.BottomArea()<<' '<<z.Volumn()<<endl;
return 0;
}