题目描述
FJ在沙盘上写了这样一些字符串:
A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 ==“ABACABADABACABA” …
你能找出其中的规律并写所有的数列AN吗?
输入
仅有一个数:N ≤ 26。
输出
输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
解析:小规律已经在题面红色标出来了噢,这题利用C++string类十分方便,C的话要利用两个数组交替拷贝。
C:
#include <stdio.h>
#include <string.h>
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,'\0',sizeof(a)); //清空,然后将b拷贝过来 strcpy(a,b);memset(b,'\0',sizeof(b));//清空,等待下次拷贝 }printf("%s\n",a); }return 0;
}
C++:
#include <iostream>
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<<b<<endl;}return 0;
}