UVA12554题解
我是个蒟蒻,有错请多多包含。
这道题目是一道不错的数组练习题。
【题意】:
津津\(Rujia\)过生日了,有\(T\)个人为他唱生日歌,其中,每个人唱一个词,若人数\(>\)歌词数\(16\),则重复唱,直到唱完为止。
歌词为:
Happy birth day to you //不输出标点哦!
Happy birth day to you
Happy birth day to Rujia //是Rujia哦!
Happy birth day to you
唱歌时不许中断。
你需要把人名及歌词输出,格式为
name: word//注意有空格
【想法】:
- 数组存歌词
- 算出重复几次
- 输入
- 重复输出
【coding】:
其他具体看注释
#include<iostream>
using namespace std;
const string song[/*注意,这边可以不写范围*/]={"Happy", "birthday", "to", "you", "Happy", "birthday", "to", "you", "Happy", "birthday", "to", "Rujia"/*注意是Rujia,不是you*/, "Happy", "birthday", "to", "you"};//存入歌曲
int t;
string names[105];//范围开大点好
int main()
{
cin>>t;
int re=(t%16==0)?(t/16):(t+16)/16;//求歌词重复数,c++自动向下取正
for(int i=0;i<t;i++)//输入
{
cin>>names[i];
}
int nowname=0,nowword=0;//现在该谁唱
int k=0;//存已输出有几个单词
for(int i=1;i<=re;i++)//循环歌曲
{
for(int i=0;i<16;i++)//嵌套内循环,用于循环歌词中的每个单词
{
cout<<names[nowname]<<": "<<song[nowword];//输出,注意有空格,还要注意是英文冒号
nowname++;//下一个人
if(nowname>=t)nowname=0;//如果超出,则跳回第一个人
nowword++;//下一个词
cout<<endl;//别忘了换行
}
nowword=0;//跳回第一个词/
if(nowname>=t)nowname=0;
}
return 0;//好习惯
}
注意:莫抄袭,没了AC记录,空悲切!

浙公网安备 33010602011771号