首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

DNA 雙螺旋圖形輸出 - 模擬題詳解

     編輯:關於C++

問題描述

輸入 N 組數據,每組給 a(單位 DNA 行數,奇數,3≤a≤39)和 b(重複度,1≤b≤20)。輸出 DNA 雙螺旋形狀:基本單元為 a 行的 X 字形,相鄰單元首尾相連(共用一行),共 b 個單元。組之間空一行。

圖形規律分析

基本單元(a=5 為例):

X   X
 X X
  X
 X X
X   X

第 1 個單元完整輸出 a 行。第 2 個單元去掉首尾行(共用),輸出 a-2 行。之後單元交替:奇數單元完整,偶數單元去首尾。若 b 為偶數,最後補一行單元尾行。

代碼實現(C)

#include 

int main() {
    int T, a, b;
    scanf("%d", &T);
    while (T--) {
        scanf("%d%d", &a, &b);
        for (int unit = 1; unit <= b; unit++) {
            int start = (unit % 2 == 1) ? 1 : 2;
            int end = (unit % 2 == 1) ? a : a-1;
            for (int i = start; i <= end; i++) {
                for (int j = 1; j <= a; j++) {
                    if (j == i || j == a - i + 1) printf("X");
                    else printf(" ");
                    if ((i <= a/2 && j == a - i + 1) || (i > a/2 && j == i)) break;
                }
                printf("\n");
            }
        }
        if (b % 2 == 0) { // 偶數單元補尾行
            for (int i = 1; i <= a; i++) {
                if (i == 1 || i == a) printf("X");
                else printf(" ");
            }
            printf("\n");
        }
        if (T) printf("\n");
    }
    return 0;
}

關鍵點

  • 行尾無多餘空格:內層循環在打印完右側 X 後 break。
  • 單元連接邏輯:奇偶單元輸出行範圍不同。
  • 最後偶數單元補充閉合尾行。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved