C语言打印DNA螺旋

写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。

题目:

题目链接:https://www.dotcpp.com/oj/problem1115.html

题目 1115: DNA

时间限制: 1Sec 内存限制: 128MB 提交: 6450 解决: 2262

题目描述
小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮,“要是能画出来就好了” 小强喊道。现在就请你帮助他吧

输入
输入包含多组测试数据。第一个整数N(N<=15),N表示组数,每组数据包含两个整数a,b。a表示一个单位的DNA串的行数,a为奇数且 3<=a<=39。b表示重复度(1<=b<=20)。

输出
输出DNA的形状,每组输出间有一空行。

样例输入
2
3 1
5 4
样例输出
在这里插入图片描述

C语言解法

注意到将团第一行掐掉之后剩下的图案是重复的,而一个DNA螺旋我们可以看成一个a*a的矩阵,或者aa的数组,在对角线上元素为X其余置位空格即可

本题我是先生成矩阵然后打印,其实也可以直接打印,稍微修改一下就可以了,但我这种我认为更易于理解

#include <stdio.h>
int main()
{
   int n, a, b;
   scanf("%d", &n);
   for (int i = 0; i < n; i++)
   {
      scanf("%d %d", &a, &b);
      char arr[a][a];
      for (int j = 0; j < a; j++)
         for (int k = 0; k < a; k++)
         {
            if (j == k || j + k == a - 1)
               arr[j][k] = 'X';
            else
               arr[j][k] = ' ';
         }
      for (int j = 0; j < a; j++)
         printf("%c", arr[0][j]);
      printf("\n");
      for (int i = 0; i < b; i++)
      {
         for (int j = 1; j < a; j++)
         {
            for (int k = 0; k < a; k++)
               printf("%c", arr[j][k]);
            printf("\n");
         }
      }
      printf("\n");
   }
}


都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
C语言专栏看这 : C语言学习专栏


如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。

猜你喜欢

转载自blog.csdn.net/weixin_45761327/article/details/106632721