C++练习题.docx
《C++练习题.docx》由会员分享,可在线阅读,更多相关《C++练习题.docx(12页珍藏版)》请在冰豆网上搜索。
![C++练习题.docx](https://file1.bdocx.com/fileroot1/2023-1/2/6fd577b1-bd36-4e74-91ba-64f159e60267/6fd577b1-bd36-4e74-91ba-64f159e602671.gif)
C++练习题
C++程序练习题
1:
试用for循环在屏幕上显示一个有字符‘X’组成的金字塔。
如下图:
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
代码:
#include
usingnamespacestd;
voidmain()
{
intn,i,j,k;
charm;
while
(1)
{
cout<<"请输入一个字符:
";
cin>>m;
cout<<"请输入层数:
";
cin>>n;
for(i=1;i<=n;i++)//i用来控制行数
{
for(j=n-i;j>=0;j--)//j用来控制空格个数
cout<<"";
for(k=1;k<=2*i-1;k++)//k可用来控制字符的输出个数
cout<cout<}
cout<}
}
2:
假设你要请6个人吃饭,但是你只有4个座位,那么客人们字啊桌子傍边有多少种坐法呢?
有排列组合,我们知道一共有6*5*4*3=360钟,请编程实现,任意数目的客人坐任意数目的椅子的排列数;
代码:
#include
usingnamespacestd;
voidmain()
{
intm,n;//m客人数,n椅子数
while
(1)
{
cout<<"请输入客人数:
";
cin>>m;
cout<<"请输入椅子数:
";
cin>>n;
for(ints=1,i=m;i>m-n;i--)//s表示坐法,赋初值,i控制
{
s*=i;
}
cout<}
}
3:
是编写一个程序,计算当以固定利息存入一定钱款时,若干年后得到的本息和;
请输入存款:
3000
请输入存期:
10(年)
请输入年利息:
5.5(变成重要实现5.5%)
本金为3000,年利息为5.5%,在存放10年后的本息和为5124.43.
代码:
#include
usingnamespacestd;
voidmain()
{
doublem,a,s=0;
intn,i;
while
(1)
{
cout<<"请输入存款:
";
cin>>m;
cout<<"请输入存期:
";
cin>>n;
cout<<"请输入年利息:
";
cin>>a;
for(i=1;i<=n;i++)
{
m=m*(1+a/100);
}
s+=m;
cout<<"本金为"<}
}
4:
试编写一个温度转换程序,程序首先向用户提供两个选项:
按1,从华氏转向摄氏温度;按2,从摄氏转向华氏;
公式:
摄氏温度c,将其转化为华氏温度f,转换公式为:
f=c*9/5+32。
代码:
#include
#include
usingnamespacestd;
voidf_to_c()
{
doublef,c;
cout<<"|-请输入一个华氏温度:
";
cin>>f;
c=5*(f-32)/9;
cout<<"华氏温度"<"<cout<<"|-----------------------------------|"<}
voidc_to_f()
{
doublef,c;
cout<<"|-请输入一个摄氏温度:
";
cin>>c;
f=c*9/5+32;
cout<<"|-摄氏温度"<"<cout<<"|-----------------------------------|"<}
voidmenu()
{
cout<cout<<"|------------温度转换器-------------|"<cout<<"-------------------------------------"<cout<<"|1:
华氏温度转换成摄氏温度|"<cout<<"||"<cout<<"|2:
摄氏温度转换成华氏温度|"<cout<<"-------------------------------------"<cout<<"|-请输入你的选择(1/2):
";
}
voidmain()
{
system("color0a");
system("modecon:
cols=100lines=30");
chari;
while
(1)
{
menu();
cin>>i;
switch(i)
{
case'1':
f_to_c();break;
case'2':
c_to_f();break;
default:
cout<<"输入有误,请重新输入!
"<break;
}
}
}
6:
连续输入几个整数,以用户输入9999结束输入,求输入的整数的平局值;
请输入:
1
请输入:
2
请输入:
3
请输入:
9999
其平均值为:
2
代码:
#include
usingnamespacestd;
voidmain()
{
intx,i=0;
floats=0,ave;
cout<<"请输入:
";
cin>>x;
while(x!
=9999)
{
s=s+x;
i++;
cout<<"请输入:
";
cin>>x;
}
if(i!
=0)
ave=s/i;
else
ave=0;
cout<<"其平均值为:
"<}
7:
编写程序:
用一张一百元票换1元、5元、10元(至少各一张),问有几种换法?
每种换法中1元、5元、10元的票各几张?
代码:
#include
usingnamespacestd;
voidmain()
{
inti,j,k;
intcount=0;
cout<<"100元可兑换:
"<for(i=1;i<86;i++)
{
for(j=1;j<14;j++)
{
for(k=1;k<9;k++)
{
if(1*i+5*j+10*k==100)
{
cout<<"一元:
"<
cout<<"五元元:
"<cout<<"十元:
"<cout<}
}
}
count++;
}
cout<<"共有"<";
cout<}
8:
编写程序:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。
第二天将剩下的桃子吃掉一半,又多吃了一个。
以后每天都吃了前一天剩下的一半零一个。
到第10天想再吃时,见之剩下一个桃子了。
求第一天摘了多少桃子?
并将每天的桃子数打印出来。
(提示:
采取逆向思维的方法,从后往前推断。
)
代码1(递归):
#include
usingnamespacestd;
intpeach_amount(intx,inty)
{
if(y>=10)
return1;
else
return2*peach_amount(x,++y)+2;
}
voidmain()
{
inta=0,sum=0;
sum=peach_amount(a,1);
cout<<"第一天有桃子总数为:
"<for(intd=1;d<=10;d++)
{
a=peach_amount(a,d);
if(a!
=1)
{
cout<<"第"<}
else
{
cout<<"第"<}
}
}
代码2:
#include
usingnamespacestd;
voidmain()
{
intday,n=1;
cout<<"请输入天数:
";
cin>>day;
if(day==day)
cout<<"第"<while(day-->1)
{
n=(n+1)*2;//第1天的桃子数是第2天桃子数加1后的2倍
cout<<"第"<}
}
9.编写程序:
输出职工信息,建立一个职工人数不超过5的信息表,职工的信息包括:
编号、姓名、工作部门和工资,最后分行打印出全部职工的信息。
代码:
#include
usingnamespacestd;
voidmain()
{
inti,a[5],b[5],c[5],d[3];
for(i=0;i<3;i++)
{
cout<<"请输入:
"<cout<<"name:
";
cin>>a[i];
cout<<"num:
";
cin>>b[i];
cout<<"bumen:
";
cin>>c[i];
cout<<"sla:
";
cin>>d[i];
}
for(i=0;i<5;i++)
{
cout<<"name"<<""<<"num"<<""<<"bumen"<<""<<"sla"<cout<cout<
cout<cout<cout<}
cout<}
10:
按如下公式计算表达式的值(用递归实现):
代码:
#include
usingnamespacestd;
intf(intp)
{
intq=0;
if(p<0)
returnf(p);
if(p==1)
return1;
if(p==2)
return2;
else
returnf(p-1)+f(p-2);
}
voidmain()
{
intm,n;
while
(1)
{
cout<<"请输入一个整数:
";
cin>>m;
n=f(m);
cout<<"n="<}
}
11:
今年父亲30岁,儿子6岁,问多少年后父亲的年龄是儿子年龄的2倍?
代码:
#include
usingnamespacestd;
voidmain()
{
intx=30,y=6,i=0;
while
(1)
{
i++;
x++;
y++;
if(x==y*2)
break;
}
cout<
}
12:
两个乒乓球队进行比赛,各出3人。
甲队为A,B,C三人,乙队为X,Y,Z三人,已抽签决定比赛名单,有人向队员打听,听比赛的名单,A说他不和X比,C说他不和X,Z比,编写C程序找出3对赛手名单
输出示例
a-z
b-x
c-y
代码:
#include
usingnamespacestd;
voidmain()
{
chari,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
if(i!
=j)
for(k='x';k<='z';k++)
if(i!
=k&&j!
=k)
if(i!
='x'&&k!
='x'&&k!
='z')
{
cout<<"A--"<
cout<<"B--"<cout<<"C--"<}
}
13:
非零自然数,分解成若干连续自然数值和,15=1+2+3+4+5,15=4+5+6,15=7+8,6=1+2+3,3=1+2,123456789=11种16没有
输入一个整数:
15
分解成:
15=1+2+3+4+5
15=4+5+6
15=7+8
共有3种