原题链接:蓝桥杯基础练习VIP-FJ的字符串
解题思路:
- 根据题意得A2是在A1的后面加上’A’+1这个字符,然后再把A1加后面;
- Ai的长度是Ai-1长度的两倍+1;
- 输入N,给AN开辟空间,根据A1一步一步得到AN
- 注意:长度为C的字符串要开辟C+1个空间,最后一个放’\0’
参考代码:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
int Num[26];
Num[0]=1;
//计算出A0A1A2.....需要的字符串长度
for(int i=1;i<26;i++)
Num[i]=Num[i-1]*2+1;
int N; //输出的组数
char *A;
while(scanf("%d",&N)!=EOF)
{
//为A开辟空间
A=(char *)malloc((Num[N-1]+1)*sizeof(char)); //长度为c的字符串要开辟c+1个空间 最后一个要存‘\0'
//令A[0]等于A
A[0]='A';
A[1]='\0';//字符串结束符
for(int i=1;i<N;i++)
{
int L=strlen(A);
A[L]='A'+i;
//把A[L]的前半部分复制到其后面
for(int j=0;j<L;j++)
{
A[j+L+1]=A[j];
}
//加上字符串结束符
A[L*2+1]='\0';
}
//输出结果
printf("%s\n",A);
free(A);
}
return 0;
}
9.9 分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复