解题思路:

  1. 根据题意得A2是在A1的后面加上’A’+1这个字符,然后再把A1加后面;
  2. Ai的长度是Ai-1长度的两倍+1;
  3. 输入N,给AN开辟空间,根据A1一步一步得到AN
  4. 注意:长度为C的字符串要开辟C+1个空间,最后一个放’\0’

参考代码:

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<malloc.h>
  4. int main()
  5. {
  6. int Num[26];
  7. Num[0]=1;
  8. //计算出A0A1A2.....需要的字符串长度
  9. for(int i=1;i<26;i++)
  10. Num[i]=Num[i-1]*2+1;
  11. int N; //输出的组数
  12. char *A;
  13. while(scanf("%d",&N)!=EOF)
  14. {
  15. //为A开辟空间
  16. A=(char *)malloc((Num[N-1]+1)*sizeof(char)); //长度为c的字符串要开辟c+1个空间 最后一个要存‘\0'
  17. //令A[0]等于A
  18. A[0]='A';
  19. A[1]='\0';//字符串结束符
  20. for(int i=1;i<N;i++)
  21. {
  22. int L=strlen(A);
  23. A[L]='A'+i;
  24. //把A[L]的前半部分复制到其后面
  25. for(int j=0;j<L;j++)
  26. {
  27. A[j+L+1]=A[j];
  28. }
  29. //加上字符串结束符
  30. A[L*2+1]='\0';
  31. }
  32. //输出结果
  33. printf("%s\n",A);
  34. free(A);
  35. }
  36. return 0;
  37. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论