学习笔记:中国大学MOOC《计算机程序设计C++》第3周编程作业

第3周编程作业
本作业是在线评测形式。提交源程序,系统自动评测,可多次提交。输出格式严格按题目要求,参考给出的样例。大小写、中英文、空格数量都必须严格。
依照学术诚信条款,我保证此作业是本人独立完成的。
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
本作业是
13-1打印3个相邻字母(20分)
题目内容:
当用户输入一个英文字母后,程序能够按照字母表的顺序打印出3个相邻的字母,其中用户输入的字母在中间。
程序运行结果如下:
d
cde
这里假设字母表首尾两个字母是相连的。若输入字母Z,则程序输出YZA。
输入格式:
一个字母字符,可能为大写,也可能为小写。
输出格式:
连续3个字符,大小写不变。
输入样例:
d
输出样例:
cde
时间限制:2000ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	char x,y,z;
	cin>>y; 
	if(y=='a'||y=='A')x=char(y+25);
	else x=char(y-1);
	if(y=='z'||y=='Z')z=char(y-25);
	else z=char(y+1);
cout<<x<<y<<z;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 360kb
4
用例2通过 2ms 372kb
4
用例3通过 2ms 256kb
3
用例4通过 2ms 376kb
3
用例5通过 2ms 232kb
3
用例6通过 2ms 256kb
3
提交答案本次得分/总分:20.00/20.00分
23-2歌唱大赛选手成绩计算(20分)
题目内容:
歌唱大赛选手成绩计算方法如下:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后成绩。这里假设共有10位评委,都是按照百分制打分。
程序运行结果如下:
88 90 97 89 85 95 77 86 92 83
88.5
如果评委给出的成绩不在0~100分之间,将给出错误提示。
程序运行结果如下:
101 90 97 89 85 95 77 86 92 83
the score is invalid.
输入格式:
10个[0,100]之间的数.
输出格式:
1个可以表示小数的数或者提示信息“the score is invalid.”
平均值变量使用double型。
输入样例:
88 90 97 89 85 95 77 86 92 83
输出样例:
88.5
时间限制:2000ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int x=0,i=10,max=0,min=100;
	bool b=1;
	while(i--) {
		double a;		
		cin>>a;
		if(a<min)min=a;
		if(a>max)max=a;
		if(a<101&&a>0)x+=a;
		else b=0;
	}
	if(b)cout<<(x-max-min)/8.0<<endl;
	else cout<<"the score is invalid.";
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 368kb
14
用例2通过 2ms 376kb
6
提交答案本次得分/总分:20.00/20.00分
33-3猴子吃桃(20分)
题目内容:
有一天,某只猴子摘了一些桃子,当时吃了一半,又不过瘾,于是就多吃了一个。以后每天如此,到第n天想吃时,发现就只剩下一个桃子。输入n,表示到第n天剩下1个桃子,请计算第一天猴子摘的桃子数。
程序运行结果如下:
10
1534
输入格式:
输入一个整数n,n>0,表示到第n天剩下1个桃子。
输出格式:
一个整数,表示第1天摘的桃子数。
输入样例:
10
输出样例:
1534
时间限制:2000ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int n,sum=0;
	cin>>n;
	while(--n){
		sum=(sum+1)*2+1;
	}
	cout<<sum+1<<endl;
	return 0;
}

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
16
用例2通过 2ms 368kb
4
提交答案本次得分/总分:20.00/20.00分
43-4搬砖问题(20分)
题目内容:
现有n块砖,要由n人一次搬完,假定男人一次可以搬4块,女人一次可以搬3块,两个小孩搬1块,计算这n人中男人、女人和小孩的人数。输入人数和砖数n,输出可能的解决方案。
程序运行结果如下:
50
men0
women10
children40
men5
women3
children42
如果没有满足的情况,显示提示信息“no result!”
程序运行结果如下:
1
no result!
输入格式:
表示人数的整型数
输出格式:
所有满足条件的男人、女人和孩子的人数或者提示信息“no result!”
输出格式见样例。有多组方案时,按男人数量从少到多的顺序输出。男人数量相同时,女人数量从少到多。
输入样例:
50
输出样例:
men0
women10
children40
men5
women3
children42
时间限制:2000ms内存限制:32000kb
C++

#include
using namespace std;
int main(){
	int n;
	bool bl=1;
	cin>>n;
	for(int i=0;i<=n/4;++i)
		for(int j=0;j<=n/3;++j)
			for(int k=2*(n-4*i-3*j);k>=0;--k)
				if(n==i*4+j*3+k/2&&k+j+i==n){
					cout<<"men"<<i<<endl;
					cout<<"women"<<j<<endl;
					cout<<"children"<<k<<endl;
					bl=0;
				}
	if(bl)cout<<"no result!"<<endl;
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 360kb
10
用例2通过 3ms 364kb
4
用例3通过 15ms 360kb
6
提交答案本次得分/总分:20.00/20.00分
53-5美分找钱(20分)
题目内容:
将n美分转换成25、10、5和1美分的硬币总共有多少种转换方法?
运行结果如下:
25
13
如果n不在0~99之间,输出提示信息“the money is invalid!”
运行结果如下:
101
the money is invalid!
输入格式:
整数,表示美分数
输入可能不是[0,99]之间的整数。输入不在该区间时,输出为“the money is invalid!”。
输出格式:
转换方法数或者提示信息“the money is invalid!”(不带引号啊,单词间只有一个空格)
输入样例:
25
输出样例:
13
时间限制:2000ms内存限制:64000kb
C++

#include
using namespace std;
int main(){
	int n,su=0;
	cin>>n;
	if(n>=0&&n<100){
		for(int m=0;m<=n/25;++m)
		for(int i=0;i<=n/5;++i)
		for(int j=0;j<=n/10;++j)
		for(int k=0;k<=n-5*i-10*j-m*25;++k)
			if(m*25+i*5+j*10+k==n)
				++su;				
		cout<<su<<endl;
	}
	else cout<<"the money is invalid!"<<endl;
	return 0;
} 

用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 368kb
16
用例2通过 2ms 256kb
4
提交答案本次得分/总分:20.00/20.00分

你可能感兴趣的:(C++学习笔记)