C++练习题(二)

文章目录


1、枚举组合
2、凯撒加密
3、矩阵输入输出与转置
4、字母顺序
5、打分
6、猴子吃桃问题
7、搬砖问题
8、元角分组合问题
9、歌单排序(结构体数组)
10、星期显示

1、有红黄蓝三种颜色的球,列出所有两两组合的结果。

#include<iostream>
using namespace std;
int main()
{
 enum color{red,yellow,blue};
 int temp,i,j;
 for (i=red;i<=yellow;i++)
 {
  for (j=i+1;j<=blue;j++)
  {
   for (int t=0;t<2;t++)
   {
    switch (t)
    {
     case 0 :temp=i;break;
     case 1 :temp=j;break;
    }
     switch((enum color)temp)
     {
     case red: cout<<"red"<<"\t";break;
     case yellow: cout<<"yellow"<<"\t";break;
     case blue: cout<<"blue"<<"\t";break;
     }
     
    }
    cout<<"\n";
  }
 }
 return 0;
}

2、恺撒加密法加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母c就用F来替换,字母y用B来替换,而字母Z用c代替。编程实现以下功能:输入一个字符串,将其加密后输出。

#include<iostream>
using namespace std;
int main()
{
 char mima[20];
 cin.getline(mima,20);
 int i=0;
 while(mima[i]!='\0')
 {
  if((mima[i]>='a')&&(mima[i]<='z'))
  {
   mima[i]=(mima[i]-32+3-'A')%26+'A';
  }
  else if((mima[i]>='A')&&(mima[i]<='Z'))
  {
   mima[i]=(mima[i]+32+3-'a')%26+'a';
  }
  
  i++;
 }
 mima[i]='\0';
 cout<<mima<<endl;
 return 0;
}

注意:这里用两个if结果就会出错,原因不详。
3、用户输入矩阵阶数,然后按行输入所有矩阵元素(整数),将该矩阵转置输出。阶数应是[1,5]之间的整数,不在该区间时,显示“matrix order error”。

#include<iostream>
using namespace std;
int main()
{
 int n;
 cin>>n;
 int ju1[5][5],ju2[5][5],i,j;
 if((n<1)||(n>5))
  cout<<"matrix order error"<<endl;
 else
 {
  for(i=0;i<n;i++)
  {
   for(j=0;j<n;j++)
    cin>>ju1[i][j];
  }
  for(i=0;i<n;i++)
  {
   for(j=0;j<n;j++)
    ju2[i][j]=ju1[j][i];
  }
  for(i=0;i<n;i++)
  {
   for(j=0;j<n;j++)
   {
    if(j==(n-1)) cout<<ju2[i][j]<<endl;
    else cout<<ju2[i][j]<<" ";
   }
  }
 }
 return 0;
}

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

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
 char m;
 cin>>m;
 if((m>='A')&&(m<='Z'))
 {
  if(m=='A')
   cout<<"ZAB"<<endl;
  else if (m=='Z')
   cout<<"YZA"<<endl;
  else
   cout<<char(m-1)<<char(m)<<char(m+1)<<endl;
 }
 else if((m>='a')&&(m<='z'))
 {
  if(m=='a')
   cout<<"zab"<<endl;
  else if (m=='z')
   cout<<"yza"<<endl;
  else
   cout<<char(m-1)<<char(m)<<char(m+1)<<endl;
 }
 else
  cout<<"error"<<endl;
}

5、歌唱大赛选手成绩计算方法如下:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后成绩。这里假设共有10位评委,都是按照百分制打分。

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
 int x1,x2,x3,x4,x5,x6,x7,x8,x9,x10;
 int max,min;
 double ave;
 cin>>x1>>x2>>x3>>x4>>x5>>x6>>x7>>x8>>x9>>x10;
 if(((x1<0)||(x1>100))||((x2<0)||(x2>100))||((x3<0)||(x3>100)) 
  ||((x4<0)||(x4>100))||((x5<0)||(x5>100))||((x6<0)||(x6>100))
  ||((x7<0)||(x7>100))||((x8<0)||(x8>100))||((x9<0)||(x9>100)) 
  ||((x10<0)||(x10>100)))
        cout<<"the score is invalid."<<endl;
 else
 {
  max = x1;
  if(x2 > max) max = x2;
  if(x3 > max) max = x3;
  if(x4 > max) max = x4;
  if(x5 > max) max = x5;
  if(x6 > max) max = x6;
  if(x7 > max) max = x7;
  if(x8 > max) max = x8;
  if(x9 > max) max = x9;
  if(x10 > max) max = x10;
  min = x1;
  if(x2 < min) min=x2;
  if(x3 < min) min=x3;
  if(x4 < min) min=x4;
  if(x5 < min) min=x5;
  if(x6 < min) min=x6;
  if(x7 < min) min=x7;
  if(x8 < min) min=x8;
  if(x9 < min) min=x9;
  if(x10 < min) min=x10;
  ave = (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10-max-min)/8.0;
  cout<<ave<<endl;
 }
}

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

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
 int n,m;
 cin>>n;
 m=1;
 while(n>1)
 {
  m=2*(m+1);
  n--;
 }
 cout<<m<<endl;
}

7、现有n块砖,要由n人一次搬完,假定男人一次可以搬4块,女人一次可以搬3块,两个小孩搬1块,计算这n人中男人、女人和小孩的人数。输入人数和砖数n,输出可能的解决方案。

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
 int n,i,j,k,f;
 cin>>n;
 f=0;
 for(i=0;i<=n;i++)
 {
  for(j=0;j<=n;j++)
  {
   for(k=0;k<=n;k++)
      {
    if((i+j+k==n)&&(4*i+3*j+k/2.0==n))
    {
     f++;
     cout<<"men"<<i<<endl;
     cout<<"women"<<j<<endl;
     cout<<"children"<<k<<endl;
    }
   }
  }
 }
 if(!f) cout<<"no result"<<endl;
 return 0;
}

8、将n美分转换成25、10、5和1美分的硬币总共有多少种转换方法?

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
 int n,i,j,k,p,flag;
 cin>>n;
 flag=0;
 if((n>=0)&&(n<=99))
 {
 for(i=0;i<=4;i++)
 {
  for(j=0;j<=10;j++)
  {
   for(k=0;k<=5;k++)
   {
    for(p=0;p<=100;p++)
    {
     if((25*i+10*j+5*k+p)==n)
      flag++;
    }
   }
  }
 }
 cout<<flag<<endl;
 }
 else
  cout<<"the money is invalid!"<<endl;
 return 0;
}

9、连续录入5首歌的歌名、歌手和点击率清单并按照点击率由高到低的顺序显示歌曲清单的信息。如果点击率相同,则按照录入的顺序显示。歌曲清单格式如下:曲名 演唱者 点击率
输入格式:
5个歌曲的清单,其中曲名(不会超过50个字符)、演唱者为字符串(不会超过20个字符),点击率为整型数
输出格式:
5个歌曲的清单(曲名、演唱者,点击率之间用一个英文空格隔开,末尾没有空格)
输入样例:
匆匆那年 王菲 90
小苹果 筷子兄弟 100
当你老了 莫文蔚 80
最炫民族风 凤凰传奇 85
平凡之路 朴树 95
输出样例:
小苹果 筷子兄弟 100
平凡之路 朴树 95
匆匆那年 王菲 90
最炫民族风 凤凰传奇 85
当你老了 莫文蔚 80

#include<iostream>
using namespace std;
int main()
{
 struct music
 {
  char name[50];
        char singer[20];
  int click;
 };
 int i,j;
 struct music m[5];
 for(i = 0; i< 5; i++)
 {
  cin>>m[i].name>>m[i].singer>>m[i].click;
 }
 for(i= 0; i< 4; i++)      //用的是冒泡排序的办法
 {
  for(j= 0;j<= (5-1-i); j++)
  {
   if (m[j].click<m[j+1].click)
   {
   struct music temp;   //同一结构体变量可以相互赋值
   temp = m[j];
   m[j] = m[j+1];
   m[j+1] = temp; 
   }
  }
 }
 for (i = 0;i< 5;i++)
  cout<<m[i].name<<" "<<m[i].singer<<" "<<m[i].click<<endl;
 return 0;
}

10、将用户输入的阿拉伯数字转换成对应星期几的英文单词(monday,tuesday,wednesday,thursday,friday,saturday,sunday)。输入1显示"monday",输入7显示“sunday”,如果用户输入的数字不在1~7之间,显示信息:invalid

#include<iostream>
using namespace std;
int main()
{
 char week[][20] = {"monday","tuesday","wednesday","thursday","friday","saturday","sunday"};
 int n;
 cin>>n;
 if((n>=1)&&(n<=7))
 {
  n=n-1;
  cout<<week[n]<<endl;
 }
 else
  cout<<"invalid"<<endl;
 return 0;
}
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值