问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
本题算法思路:用两个数组。一开始并没有想明白它数组需要存放多大,只知道字母间对称。看到 基础练习 FJ的字符串-CSDN博客博主文章里第一张图瞬间一目了然
后面直接运用到了两个字符串的函数:
1,sprintf是一个C语言中的函数,用于将格式化的数据写入字符串中。
以下为sprintf运用代码示例:
#include <stdio.h>
int main() {
char str[100];
int num = 123;
float f = 3.14;
sprintf(str, "数字为 %d 浮点数为 %.2f", num, f);
printf("%s\n", str);
return 0;
}
输出结果为:数字为 123 浮点数为 3.14
2,strcpy是一个C语言中的函数,用于将一个字符串复制到另一个字符串中。
它的原型如下:
char *strcpy(char *dest, const char *src);
其中,dest是目标字符串的指针,src是源字符串的指针。
完整代码
#include<stdio.h>
#include<string.h>
//等比数列 ,2^0 + 2^1...
char str[67108864],str1[67108864];//str用于添加字母
int main(){
int i;
int n;
scanf("%d",&n);
str1[0] = '\0';
//字符串与字符的拼接 ,单个字符 c
for(i = 0;i < n;i++){
sprintf(str,"%s%c%s",str1,'A' + i,str1);
//将str字符串复制给str1 (覆盖)
strcpy(str1,str);
}
printf("%s",str);
return 0;
}