第三周编程作业

3-1 打印3个相邻字母(20分)

题目内容:

当用户输入一个英文字母后,程序能够按照字母表的顺序打印出3个相邻的字母,其中用户输入的字母在中间。

程序运行结果如下:

d

cde

这里假设字母表首尾两个字母是相连的。若输入字母Z,则程序输出YZA。

输入格式:

一个字母字符,可能为大写,也可能为小写。

输出格式:

连续3个字符,大小写不变。

输入样例:

d

输出样例:

cde
时间限制:2000ms内存限制:32000kb

#include <iostream>
using namespace std;
int main()
{
	char left, right, mid;
	cin>>mid;
	left = mid-1;
	right= mid+1;
	switch(mid)
	{
		case 'a': left = 'z'; break;
		case 'A': left = 'Z'; break;
		case 'z': right= 'a'; break;
		case 'Z': right= 'A'; break;
	}
	cout<<left<<mid<<right<<endl;
	return 0;
}

3-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

#include <iostream>
using namespace std;
int main()
{
	int score[10];
	int max = 0;
	int min=100;
	int sum=0;
	int i;
	for( i=0; i<10; i++)
	{
		cin>>score[i];
		if(score[i]<0||score[i]>100)
			break;
		if(score[i]>max)    max = score[i];
		if(score[i]<min)    min = score[i];
		sum += score[i];
	}
	if(i!=10)//这里用了一个间接的判定方法
	cout<<"the score is invalid."<<endl;
	else
	{
		sum = sum-max-min;
		double average = 1.0*sum/8;
		cout<<average<<endl;
	}
	return 0;
}
//错误提示信息建议直接复制

3-3 猴子吃桃(20分)

题目内容:

有一天,某只猴子摘了一些桃子,当时吃了一半,又不过瘾,于是就多吃了一个。以后每天如此,到第n天想吃时,发现就只剩下一个桃子。输入n,表示到第n天剩下1个桃子,请计算第一天猴子摘的桃子数。

程序运行结果如下:

10

1534

输入格式:

输入一个整数n,n>0,表示到第n天剩下1个桃子。

输出格式:

一个整数,表示第1天摘的桃子数。

输入样例:

10

输出样例:

1534
时间限制:2000ms内存限制:32000kb

#include <iostream>
using namespace std;
int n;
int f(int i)//写了一个递归函数
{
	if(i==n)//知道第n天的桃子
	return 1;
	return 2*(f(i+1)+1);
}
int main()
{
	cin>>n;
	cout<<f(1)<<endl;
	return 0;
}
//这道题要先找到那个递推关系,也可以求通项公式

3-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

#include <iostream>
using namespace std;
int main()
{
	int i, j, sign=0;
	int n;
	cin>>n;
	for(i=0; i<=n; i++)
		for(j=0; j<=n; j++)
		{
			if((n-i-j)%2)
			continue;
			if(4*i+3*j+(n-i-j)/2==n)
			{
				cout<<"men"<<i<<endl;
				cout<<"women"<<j<<endl;
				cout<<"children"<<n-i-j<<endl;
				sign = 1;
			}
		}
			
			if(sign==0)
			cout<<"no result!"<<endl;
	return 0;
}
//这是类似与百钱百鸡的问题,暴力枚举即可

3-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

#include <iostream>
using namespace std;
int main()
{
	int cent;
	cin>>cent;
	if(cent<0||cent>100)
	cout<<"the money is invalid!"<<endl;
	else{
		int cnt=0;
		for(int i=0; i<=cent/25; i++)
		for(int j=0; j<=cent/10; j++)
		for(int k=0; k<=cent/5; k++)
		for(int l=0; l<=cent; l++)
		if(i*25+j*10+k*5+l==cent)
		cnt++;
		cout<<cnt<<endl;
	}
	return 0;
}
//这也是枚举问题,这种题要确定好变量变化的范围
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java题目(仅供学习): 一、根据以下要求,比较两个字符串的大小,并返回比较结果: 1、比较两字符串的大小。 2、忽视大小写 3、 按字典序 如果第一个字符串大于第二个字符串 返回大于0,如果第一个字符串等于第二个字符串 返回等于0 ,如果第一个字符串小于第二个字符串返回小于0。 4、例子 compareToIgnoreCase("HARD","hark")的比较结果返回小于0 。 二、给一个二维数组inArr[ ][ ],写一个方法获取每一列的最小值,输出到一个一维数组outArr[ ]中。 如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {1,5,3} 三、判断一个字符串是否是首字母大写,其余字母都是小写。 例如 输入:True 输出: true 四、输入一个字符串,字符串是字母和数字的组合,编程实现输出一个新的字符串,要求字母在前面,数字在后面,顺序不变,例如:2s7ess83a 变成sessa2783 五、一个字符串,获取最长的一个单词,如有多个相同长度的单词返回第一个单词。入输入:"hello china"则返回 hello 六、将一个字符里出现最多的字母截取,如,addcbbs变为acs。 七、输入一个整型数组,arr=(1,2,5) 输出数组中数字对应英文字母表中对应的字母,如果不在字母表中用"?"表示 例如,输入arr=(1,2,30,3),输出:a b ? c 八、输入一数组,按照英文26个字母顺序,输出每个数字对应的字母,如果查不到,则输出?。如[1,3,30],输出ac?。 九、把数组中的1-26的数字映射成a-z的小写字母 如果输入其他数字,则在页面上打印"?" 如:int [] arr={1,2,3,4,30} 输出:a,b,c,d,? 十、输入A-Z26个字母,输入一个大写字母后,输出该字母之后第5个字母的小写。 如输入A,输出f,输入Z,则输出e,超出Z是,超过1个,则返回a,超过两个,则返回b,以此类推。 十一、一个维数组,求大于等于数组内的所有值的平均值的个数 例,{1、2、3、4、5、6、7、8、9、10} 输出 5 十二、给一个二维数组inArr[ ][ ],写一个方法获取每一列的最大值,输出到一个一维数组outArr[ ]中。 如:inArr[ ][ ]={{1,8,3},{6,5}},则输出outArr[ ] = {8,6} 选取一组一维数组,求出它的最大值和次大值,放入另一个一维数组中并返回。 十三、求两个数的最大公约数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值