07-语言入门-07-A Famous Music Composer

题目地址: http://blog.csdn.net/sevenmit/article/details/8231994

描述

Mr. B is a famous music composer. One of his most famous work was his set of preludes. These 24 pieces span the 24 musical keys (there are musically distinct 12 scale notes, and each may use major or minor tonality). The 12 distinct scale notes are:

A    A#=Bb B      C     C#=Db D      D#=Eb E      F      F#=Gb G     G#=Ab

Five of the notes have two alternate names, as is indicated above with equals sign. Thus, there are 17 possible names of scale notes, but only 12 musically distinct notes. When using one of these as the keynote for a musical key, we can further distinguish between major and minor tonalities. This gives 34 possible keys, of which 24 are musically distinct.

In naming his preludes, Mr. B used all the keys except the following 10, which were named instead by their alternate names:

Ab minor A# major A# minor C# major Db minor
D# major D# minor Gb major Gb minor G# major

Write a program that, given the name of a key, give an alternate name if it has one, or report the key name is unique.

输入
Each test case is described by one line having the format "note tonality", where "note" is one of the 17 names for the scale notes given above, and "tonality" is either "major" or "minor" (quotes for clarify).

输出
For each case output the required answer, following the format of the sample.

样例输入
Ab minor
D# major
G minor

样例输出
Case 1: G# minor
Case 2: Eb major
Case 3: UNIQUE

#include <stdio.h>
#include <string.h>

#define ARR_LEN 10

int main()
{
     char str1[ARR_LEN];
     char str2[ARR_LEN];
     int index = 0;
     while(scanf("%s %s",str1,str2) != EOF)
     {
          getchar();
          printf("Case %d: ",++index);
          if(strcmp(str1,"A#") == 0)
          {
               printf("Bb %s\n",str2);
          }
          else if(strcmp(str1,"Bb") == 0)
          {
               printf("A# %s\n",str2);
          }
          else if(strcmp(str1,"C#") == 0)
          {
               printf("Db %s\n",str2);
          }
          else if(strcmp(str1,"Db") == 0)
          {
               printf("C# %s\n",str2);
          }
          else if(strcmp(str1,"D#") == 0)
          {
               printf("Eb %s\n",str2);
          }
          else if(strcmp(str1,"Eb") == 0)
          {
               printf("D# %s\n",str2);
          }
          else if(strcmp(str1,"F#") == 0)
          {
               printf("Gb %s\n",str2);
          }
          else if(strcmp(str1,"Gb") == 0)
          {
               printf("F# %s\n",str2);    
          }
          else if(strcmp(str1,"G#") == 0)
          {
               printf("Ab %s\n",str2);
          }
          else if(strcmp(str1,"Ab") == 0)
          {
               printf("G# %s\n",str2);
          }
          else
          {
               printf("UNIQUE\n");
          }
     }
    
     return 0;
}

注意:

1.英语真心没看懂,英语水平真是渣呀。

2.有更优秀的代码,感觉真心不错:

找到了转换的关系,一切交由代码决定。

#include<iostream>
#include<string>
using namespace std;
string trans(string a){
     string b="";
     if(a[1]==‘#‘){
          b+=char((a[0]-‘A‘+1)%7+‘A‘);
          b+=‘b‘;
     }else{
          b+=char((a[0]-‘A‘+6)%7+‘A‘);
          b+=‘#‘;
     }
     return b;
}
int main(){
     string a,b;
     for(int t=1; cin>>a>>b; t++){
          cout<<"Case "<<t<<": ";
          if(a.length()==1)
               cout<<"UNIQUE"<<endl;
          else
               cout<<trans(a)<<" "<<b<<endl;
     }
     return 0;
}

时间: 2024-10-08 09:04:27

07-语言入门-07-A Famous Music Composer的相关文章

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

C语言入门(二十五)文件操作

文件操作  一.标准文件的读写 1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char *f

A Famous Music Composer

描述 Mr. B is a famous music composer. One of his most famous work was his set of preludes. These 24 pieces span the 24 musical keys (there are musically distinct 12 scale notes, and each may use major or minor tonality). The 12 distinct scale notes ar

第一节,C语言入门

1.标示符:    命名规则:    1.只能由字母.数字.下划线组成    2.不能数字开头    3.不能与关键字重名    4.严格区分大小写    命名规范:     1.起一个有意义名字     2.驼峰标示2.注释 注释: 对代码的解释说明,是写给程序看的,方面程序员之间交流 特点: 注释是不参与编译 /* 这里面可以写 */ 多行注释 // 这是一个单行注释 只有这一行是注释,只有 两个斜杠后面才是注释内容 /* */ command + / 注释或取消注释 多行注释是可以嵌套单行

哪有python开发语言入门教程免费下载?

人工智能时代,如果不想被机器人取代,最应该掌握的是编程.Python作为连续10年最受欢迎的编程语言,不但能开发Google .豆瓣等大型网站,还是人工智能领域的第一语言.那么,我猜你想问哪里有python开发语言入门教程. 千锋Python基础教程:http://pan.baidu.com/s/1qYTZiNE Python课程教学高手晋级视频总目录:http://pan.baidu.com/s/1hrXwY8k Python课程windows知识点:http://pan.baidu.com/

VC6.0学习C语言入门SDK

百度网盘链接 VC6.0    密码:t6bd VS2010 密码:3of2 C语言入门教程 在线视频地址(PS此链接摘抄至博主lellansin) Acfun.tv:http://www.acfun.tv/search.aspx#query=C语言入门教程 Bilibili.tv:http://www.bilibili.tv/search?keyword=C语言入门教程 最后和大家分享一个实现行列式算法的C代码 /*=======================================

《Go语言入门》第一个Go语言Web程序——简单的Web服务器

概述 上一篇讲了 <Go语言入门>第一个Go语言程序--HelloWorld,接下来讲一下Go语言Web开发入门必修课:第一个Go语言Web程序--简单的Web服务器. 与其它Web后端语言不同,Go语言需要自己编写Web服务器. 有关本地环境的搭建与基础学习,请参考: <Go语言入门>如何在Windows下安装Go语言编程环境 Go语言Web应用:IBM的云平台Bluemix使用初体验--创建Go语言 Web 应用程序,添加并使用语言翻译服务 Web服务器代码 Google在ht

简单易懂的程序语言入门小册子(9):环境,引入环境

\newcommand{\mt}[1]{\text{#1}} \newcommand{\mE}{\mathcal{E}} \newcommand{\tup}[1]{\left<{#1}\right>} 环境类似于其他语言(C++.JAVA等)的"符号表". 所谓符号表,是一张将变量名与变量代表的内容联系起来的一张表. 不过这里我们抛弃符号表的观点,单纯地从算法角度上引入环境这一概念. 引入环境 通过修改解释器求值过程的算法,可以很自然的引入环境这个概念. 在前面基于文本替换

简单易懂的程序语言入门小册子(6):基于文本替换的解释器,引入continuation

当我写到这里的时候,我自己都吃了一惊. 环境.存储这些比较让人耳熟的还没讲到,continuation先出来了. 维基百科里对continuation的翻译是"延续性". 这翻译看着总有些违和感而且那个条目也令人不忍直视. 总之continuation似乎没有好的中文翻译,仿佛中国的计算机科学里没有continuation这个概念似的. Continuation这个概念相当于过程式语言里的函数调用栈. 它是用于保存"现在没空处理,待会再处理的事"的数据结构. 这样说