第三章 程序控制
1.猴子吃桃问题
【问题描述】猴子吃桃问题。猴子第1天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第2天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第n天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?
【输入形式】标准输入,剩下一个桃子的天数n。
【输出形式】标准输出,第一天共摘的桃子个数。
【样例输入】
10
【样例输出】
1534
【样例说明】只需输入和输出数据,不要有多余字符出现,有测试输出时请使用cerr。
#include<iostream>
using namespace std;
int main()
{
int n,sum=1;
cin>>n;
n=n-1;
while(n>=1)
{
sum=(sum+1)*2;
--n;
}
cout<<sum;
return 0;
}
2.百鸡问题
【问题描述】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>
using namespace std;
int main()
{
int n,x,y,z;
cin>>n;
x=0;
while(x<=n/5)
{
y=0;
while(y<=n/3)
{
if((n-5*x-3*y)>=0)
{
z=(n-5*x-3*y)*3;
if(x+y+z==100)
cout<<"x="<<x<<","<<"y="<<y<<","<<"z="<<z<<endl;
}
y++;
}
x++;
}
return 0;
}
3.数字逆序
【问题描述】输入一个int型的整数num,逆向输出其各位数字,同时求出其位数以及各位数字之和。
【输入形式】输入流(标准)输入,输入一个整数。
【输出形式】输出流(标准)输出。结果为三行,第一行为逆向数字,第二行为各位数字之和,第三行为数字位数。
【样例输入】
1000
【样例输出】
0001
1
4
【样例说明】注意输出位置在每行开始,不要有其他输出语句,不要有其他多余符号。如有测试必要请使用cerr。
#include<iostream>
using namespace std;
int main()
{
int num,index,sum=0,count=0;
cin>>num;
while(num>0)
{
index=num%10;
cout<<index;
sum+=index;//计算各位数字之和
count+=1;//统计数字位数
num/=10;//每循环一次数字减少十分之一
}
cout<<endl<<sum<<endl<<count;
return 0;
}