第三章 程序控制
1.数字逆序
【问题描述】输入一个int型的整数num,逆向输出其各位数字,同时求出其位数以及各位数字之和。
【输入形式】输入流(标准)输入,输入一个整数。
【输出形式】输出流(标准)输出。结果为三行,第一行为逆向数字,第二行为各位数字之和,第三行为数字位数。
【样例输入】1000
【样例输出】
0001
1
4
【样例说明】注意输出位置在每行开始,不要有其他输出语句,不要有其他多余符号。如有测试必要请使用cerr。
【评分标准】提交文件名为3-8.cpp。
#include <iostream>
using namespace std;
int main()
{
int num,x,y=0,sum=0;//num为输入值,x为每次最低位的值,
//y为此数的位数(也代表运算进行的次数),sum为各位数的数值
cin>>num;
while(num>0)//保证输入数值大于0
{
x=num%10;//取最低位的值
num/=10;//缩小数值,保留整数部分
cout<<x;//没有endl(代表一行结束,输出下一行,end of line)
//此处为不停输出x值
sum+=x;//各位数的数值计入总和
y++;//处理运算的次数代表此数的位数
}
cout<<endl;//要换行啦 ,endl(代表一行结束,输出下一行,end of line)
cout<<sum<<endl;// sum为各位数的数值
cout<<y<<endl;// 为此数的位数(也代表运算进行的次数)
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
【样例说明】每行一个解,注意逗号为英文字符,每行数据顶格输出。
【评分标准】给出n,正确得出所有求解结果,提交源文件名称3-10.cpp。
#include<iostream>
using namespace std;
int main()
{
int n,z;//n元买100只鸡,大鸡5元每只,小鸡3元每只,还有1/3元每只的小鸡
//分别记为x只,y只,z只
cin>>n;
for(int x=0;x<=100;x++)
for(int y=0;y<=100;y++)
{
z=100-x-y;
if(15*x+9*y+z==3*n)
cout<<"x="<<x<<','<<"y="<<y<<','<<"z="<<z<<endl;
//按照x,y,z依次增大顺序输出???
//怎么调整呢???一出来默认就是???
}
return 0;
}
3.猴子吃桃问题
【问题描述】猴子吃桃问题。猴子第1天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第2天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第n天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?
【输入形式】标准输入,剩下一个桃子的天数n。
【输出形式】标准输出,第一天共摘的桃子个数。
【样例输入】10
【样例输出】1534
【样例说明】只需输入和输出数据,不要有多余字符出现,有测试输出时请使用cerr。
【评分标准】 给出天数,正确输出第一天摘桃子个数,上传源文件名称3-16.cpp。
#include<iostream>
using namespace std;
int main()
{
int n,x=1,i=1;//n为输入天数,x为倒数第一天(即只剩一颗桃的那天)所拥有的桃,
//y为倒数第二天所拥有的桃(已省去),接下来不断迭代,交换数值
cin>>n;
for(;i<n;i++)//i 是循环次数,循环次数比天数n少一次
//写for程序之前要有明确概念,究竟循环多少次 ,以哪个量为参照
x=(x+1)*2;
cout<<x;
return 0;//n>=31时,int数据溢出,将会输出负值
}
4.比赛对阵策略
【问题描述】两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X,Z比,请编程找出三对赛手间的对阵情况。
【输入形式】无
【输出形式】标准输出,三对赛手对阵对阵情况,每对内部用“--”隔开,每对间使用空格隔开。
【样例输入】
【样例输出】A--Z B--X C--Y
【样例说明】注意输出格式,空格和回车不要出现混乱。
【评分标准】正确输出结果。
#include <iostream>
using namespace std;
int main()
{
char i,j,k;//i-A,j-B,k-C
for (i='X';i<='Z';i++)
for (j='X';j<='Z';j++)
for (k='X';k<='Z';k++)
{
if ((i!=j&&i!=k&&j!=k)&&i!='X'&&k!='X'&&k!='Z')
cout<<"A--"<<i<<" "<<"B--"<<j<<" "<<"C--"<<k<<endl;
}
return 0;
}