[C++] 第三章作业 程序控制(选择+循环)


数字逆序

【问题描述】输入一个int型的整数num,逆向输出其各位数字,同时求出其位数以及各位数字之和。
【输入形式】输入一个整数。
【输出形式】结果为三行,第一行为逆向数字,第二行为各位数字之和,第三行为数字位数。
【样例输入】
1000
【样例输出】
0001
1
4

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int N,Sum_a=0,t=0;
	cin>>N;
	if (N==0) cout<<N<<endl;
	while (N>0)
	{
		cout<<N % 10;
		Sum_a+=N % 10;
		N=N/10;
		t++;
	}
	cout<<endl<<Sum_a<<endl<<t<<endl;
}

顺便附上字符串的做法(其实没啥区别

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
	int s_length,i=-1,Sum_a=0;
	string s;
	cin>>s;
	i = s_length = s.length();
	while (--i>=0)
	{
		Sum_a+=s[i]-'0';
		cout<<s[i];
	}
	cout<<endl<<Sum_a<<endl<<s_length<<endl;
}

猴子吃桃问题

【问题描述】猴子第1天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个。第2天,吃剩下的桃子的一半,还不过瘾,又多吃了一个。以后每天都吃前一天剩下的一半多一个,到第n天想再吃时,只剩下一个桃子了。请问第一天共摘了多少个桃子?

【输入形式】剩下一个桃子的天数n。
【输出形式】第一天共摘的桃子个数。
【样例输入】10
【样例输出】1534
【样例说明】只需输入和输出数据,不要有多余字符出现。
【ps】 An=(An-1+1)*2

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int N,Sum_a=1;
	cin>>N;
	for (int i=2;i<=N;i++) Sum_a=(Sum_a+1)*2;
	cout<<Sum_a<<endl; 
}

百鸡问题

【问题描述】n元买100只鸡,公鸡每只5元,母鸡每只3元,小鸡每只1/3元,设公鸡、母鸡、小鸡的数量分别记为x,y,z,求所有可能的解。
【输入形式】标准输入,总钱数n
【输出形式】标准输出,输出x y z 的值,按照x,y,z依次增大顺序输出
【样例输入】
100
【样例输出】

  x=0,y=25,z=75
  x=4,y=18,z=78
  x=8,y=11,z=81
  x=12,y=4,z=84

【样例说明】每行一个解,注意逗号为英文字符,每行数据顶格输出。

【简化版】

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int N;
	cin>>N;
	for (int i=0;i<=100;i++)
		for (int j=0;j<=100;j++)
			if ((i+j+(N-i*5-j*3)*3)==100) cout<<"x="<<i<<",y="<<j<<",z="<<(N-i*5-j*3)*3<<endl;
}

【简单优化版】

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int N;
	cin>>N;
	for (int i=0;i<=N/5;i++)
		for (int j=0;j<=(N-i*5)/3;j++)
			if ((i+j+(N-i*5-j*3)*3)==100) cout<<"x="<<i<<",y="<<j<<",z="<<(N-i*5-j*3)*3<<endl;
}

比赛对阵策略

【问题描述】两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。以抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X,Z比,请编程找出三对赛手间的对阵情况。
【输入形式】无
【输出形式】标准输出,三对赛手对阵对阵情况,每对内部用“–”隔开,每对间使用一个空格隔开。
【样例输入】
【样例输出】A–Z B–X C–Y
【样例说明】注意输出格式,空格和回车不要出现混乱。
【ps】不用试了,直接输出算错

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	for (char i='X';i<='Z';i++)
		for (char j='X';j<='Z';j++)
			for (char k='X';k<='Z';k++)	
				if (i!='X'&&k!='X'&&k!='Z'&&i!=j&&j!=k&&i!=k) cout<<"A--"<<i<<" B--"<<j<<" C--"<<k<<endl;
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值