學習筆記MOOC《計算機程序設計C++》第4周編程作業

第4周編程作業
本作業是在線評測形式。提交源程序,系統自動評測,可多次提交。輸出格式嚴格按題目要求,參考給出的樣例。大小寫、中英文、空格數量都必須嚴格。
依照學術誠信條款,我保證此作業是本人獨立完成的。
溫馨提示:
1.本次作業屬於Online Judge題目,提交後由系統即時判分。
2.學生可以在作業截止時間之前不限次數提交答案,系統將取其中的最高分作爲最終成績。
1愷撒加密(20分)
題目內容:
愷撒加密法加密規則是:將原來的小寫字母用字母表中其後面的第3個字母的大寫形式來替換,大寫字母按同樣規則用小寫字母替換,對於字母表中最後的三個字母,可將字母表看成是首未銜接的。如字母c就用F來替換,字母y用B來替換,而字母Z用c代替。編程實現以下功能:輸入一個字符串,將其加密後輸出。
程序運行結果如下:
AMDxyzXYZ
dpgABCabc
輸入格式:
一個字符串(不會超過20個字符,由26個英文字母構成)
輸出格式:
一個字符串
輸入樣例:
AMDxyzXYZ
輸出樣例:
dpgABCabc
時間限制:2000ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
int main(){
	char a[22];		
	cin>>a;
	int i=0;
	while(a[i]) {
		if(a[i]>96){
			a[i]-=29;
			if(a[i]>90)a[i]-=26;			
		}
		else{
			a[i]+=35;
			if(a[i]>122)a[i]-=26;
		}
		cout<<a[i++] ;
	}
	return 0;
}

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 368kb
7
用例2通過 2ms 380kb
7
用例3通過 2ms 368kb
6
提交答案本次得分/總分:20.00/20.00分
2矩陣轉置(20分)
題目內容:
用戶輸入矩陣階數,然後按行輸入所有矩陣元素(整數),將該矩陣轉置輸出。階數應是[1,5]之間的整數,不在該區間時,顯示“matrix order error”。
輸入格式:
第1行,一個整數,表示階數n。
以後是n行數據,每行n個整數,是按行輸入的矩陣元素。
輸出格式:
n行轉置的數據,數據間以一個空格分隔,行末沒有空格。
輸入輸出樣例1
輸入:
4
4 6 8 9
2 7 4 5
3 8 16 15
1 5 7 11
輸出:
4 2 3 1
6 7 8 5
8 4 16 7
9 5 15 11
輸入輸出樣例2
輸入:
0
輸出:
matrix order error
注意:轉置應該是存儲矩陣的數組中的元素實現了轉置運算,而不僅是顯示效果。
時間限制:2000ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
int main(){
	int a[5][5];
	int n;			
	cin>>n;
	if(n<1||n>5){
		cout<<"matrix order error";
		return 0;
	}
	for(int i=0;i<n;++i)
		for(int j=0;j<n;++j)
			cin>>a[j][i];
	for(int i=0;i<n;++i){
		for(int j=0;j<n;++j){			
			cout<<a[i][j];
			if(j!=n-1)cout<<' ';
			else cout<<endl;
		}
	}
	return 0;
}

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 368kb
3
用例2通過 2ms 380kb
3
用例3通過 2ms 368kb
3
用例4通過 2ms 368kb
3
用例5通過 2ms 380kb
4
用例6通過 3ms 372kb
2
用例7通過 14ms 376kb
2
提交答案本次得分/總分:20.00/20.00分
3按點擊率顯示歌曲(20分)
題目內容:
連續錄入5首歌的歌名、歌手和點擊率清單並按照點擊率由高到低的順序顯示歌曲清單的信息。如果點擊率相同,則按照錄入的順序顯示。
歌曲清單格式如下:
曲名 演唱者 點擊率
輸入格式:
5個歌曲的清單,其中曲名(不會超過50個字符)、演唱者爲字符串(不會超過20個字符),點擊率爲整型數
輸出格式:
5個歌曲的清單(曲名、演唱者,點擊率之間用一個英文空格隔開,末尾沒有空格)
輸入樣例:
匆匆那年 王菲 90
小蘋果 筷子兄弟 100
當你老了 莫文蔚 80
最炫民族風 鳳凰傳奇 85
平凡之路 朴樹 95
輸出樣例:
小蘋果 筷子兄弟 100
平凡之路 朴樹 95
匆匆那年 王菲 90
最炫民族風 鳳凰傳奇 85
當你老了 莫文蔚 80
時間限制:2000ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
int main(){
	struct songlist{
		char song[51],name[22];int time=0;		
	}son[6];
	for(int i=0;i<5;++i){
		cin>>son[i].song>>son[i].name>>son[i].time;	
	}
	for(int m=4;m>0;--m)
	for(int n=0;n<m;++n){
		if(son[n].time<son[n+1].time){
			son[5]=son[n];
			son[n]=son[n+1];
			son[n+1]=son[5];
		}
	}
	for(int i=0;i<5;++i){
		cout<<son[i].song<<" "<<son[i].name<<" "<<son[i].time<<endl;
	}
	return 0;
}

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 380kb
15
用例2通過 2ms 368kb
5
提交答案本次得分/總分:20.00/20.00分
4星期轉換(20分)
題目內容:
將用戶輸入的阿拉伯數字轉換成對應星期幾的英文單詞(monday,tuesday,wednesday,thursday,friday,saturday,sunday)。輸入1顯示"monday",輸入7顯示“sunday”,如果用戶輸入的數字不在1~7之間,顯示信息:invalid
輸入格式:
整數
輸出格式:
星期幾的英文單詞或者“invalid”
輸入樣例1:
1
輸出樣例1:
monday
輸入樣例2:
8
輸出樣例2:
invalid
時間限制:2000ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
int main(){
	char a[20][20]={"invalid","monday","tuesday","wednesday","thursday","friday","saturday","sunday"};
	int i;
	cin>>i;
	if(i>0&&i<8)cout<<a[i]<<endl;
	else cout<<a[0];
	return 0;
}

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 3ms 256kb
2
用例2通過 2ms 260kb
2
用例3通過 2ms 256kb
2
用例4通過 2ms 244kb
2
用例5通過 2ms 360kb
2
用例6通過 2ms 372kb
2
用例7通過 2ms 256kb
2
用例8通過 2ms 244kb
6
提交答案本次得分/總分:20.00/20.00分
5插入加密(20分)
題目內容:
插入式加密是在明文字母中按照指定間隔插入另一些字母以形成密文。例如對明文china,在間隔爲1的位置插入其它字母序列中的字母a,b,c,d,e,就變成密文cahbicndae;間隔爲2時的密文爲chainbac,要求輸入明文和間隔,從存放其它字母的序列(僅包含a,b,c,d,e)中依次取出對應字母插入到明文中,如果其它字母序列的字母取完,則從頭再取,要求密文中最後一個字母一定是其它字母序列中的字母。
輸入格式:
一個是明文字符串,一個是表示間隔的正整數。明文(不超過30個字符),間隔的取值範圍是(1~5)。
輸出格式:
密文(不超過60個字符)
輸入樣例:
china
1
輸出樣例:
cahbicndae
時間限制:2000ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
int main(){
	char a[50],lock[]="abcde";
	int n,m=0,l=0;
	cin>>a>>n;
	while(a[m]){
		cout<<a[m++];
		if(0==m%n)cout<<lock[(l++)%5];
	}
	if(m%n!=0)cout<<lock[(l)%5];
	return 0;
}

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 6ms 256kb
4
用例2通過 3ms 360kb
4
用例3通過 2ms 364kb
4
用例4通過 2ms 364kb
4
用例5通過 2ms 256kb
4
提交答案本次得分/總分:20.00/20.00分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章