FJ在沙盘上写了这样一些字符串:
A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 ==“ABACABADABACABA” …
你能找出其中的规律并写所有的数列AN吗?
输入仅有一个数:N ≤ 26。
输出相应的字符串AN,以一个换行符结束。
输出中不得含有多余的空格或换行、回车符。
3
样例输出ABACABA
解析:小规律已经在题面红色标出来了噢,这题利用C++string类十分方便,C的话要利用两个数组交替拷贝。
C:
#include
#include
char a[1005],b[1005];//数组开大一点,不然会越界
int main()
{
int i,n,len;
char biaoji;//表示中心添加的字母
while(~scanf("%d",&n)){
memset(a,'\0',sizeof(a));//清空一下
memset(a,'\0',sizeof(a));
a[0]='A';
biaoji='A';
for(i=2;i<=n;i++){
strcat(b,a);//strcat函数,将a拼接到b后面
len=strlen(b);//确定添加中心字母位置
biaoji++;//中心要添加的字母加一,变成下一个字母
b[len]=biaoji;//
strcat(b,a);
memset(a,'
',sizeof(a)); //清空,然后将b拷贝过来
strcpy(a,b);
memset(b,'',sizeof(b));//清空,等待下次拷贝 } printf("%s\n",a); } return 0; }
C++:
#include
using namespace std;
int main()
{
int n;
string a,b;
char c; //添加的中心字母
while(cin>>n){
a='A',b='A',c='B';//初始化噢
n--;//因为初始化为'A',n减一次。
<
while(n--){
b=a+c+a;//string类直接拼起来
a=b;//b拷贝到a
c++;//中心添加的字母加一,变成下一次字母
}
cout
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)