学习笔记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分

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