程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 1412202129

1412202129

編輯:關於C++

1006: DNA

時間限制: 1 Sec 內存限制: 128 MB
提交: 4 解決: 2
[提交][狀態][討論版]

題目描述

小強從小就喜歡生命科學,他總是好奇花草鳥獸從哪裡來的。終於, 小強上中學了,接觸到了神聖的名詞--DNA.它有一個雙螺旋的結構。這讓一根筋的小強抓破頭皮,“要是能畫出來就好了” 小強喊道。現在就請你幫助他吧

輸入

輸入包含多組測試數據。第一個整數N(N<=15),N表示組數,每組數據包含兩個整數a,b。a表示一個單位的DNA串的行數,a為奇數且 3<=a<=39。b表示重復度(1<=b<=20)。

輸出

輸出DNA的形狀,每組輸出間有一空行。

樣例輸入

2 3 1 5 4

樣例輸出

X X
X
X X


X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X

解題思路 通過觀察輸出確定題目要求的輸出格式,注意兩點:1、每行之後沒有多余的空格 2、不是單純的重復輸出一個圖形,而是每兩個小圖形之間相連接。 代碼
#include
int main()
{
	int t;
	int a,b;
	int i,j,k;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&a,&b);
		for(i=1;i<=b;i++)
		{
			if(i%2==1)
			//當是第奇數個小圖形的時候,就將小圖形完全輸出 
			{
				for(j=1;j<=a;j++)
				{
					for(k=1;k<=a;k++)
					{
						if(k==j||k==a-j+1)
						    printf("X");
						else
						    printf(" ");
						if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
						    break;//避免輸出多余的空格 
					}
					printf("\n");
				}
			}
			else
			{//當是第偶數個小圖形的時候,將小圖形首尾各截去一行再輸出 
				for(j=2;j<=a-1;j++)
				{
					for(k=1;k<=a;k++)
					{
						if(k==j||k==a-j+1)
						    printf("X");
						else
						    printf(" ");
						if((j<=a/2&&k==a-j+1)||(j>a/2&&k==j))
						    break;
					}
					printf("\n");
				}
			}
		}
		if(b%2==0)//如果一共有偶數個小圖形,那麼在最後就需要再加一個尾,即小圖形的最後一行 
		{
		    for(i=1;i<=a;i++)
		    {
		        if(i==1||i==a)
		            printf("X");
		        else
		            printf(" ");
		    }
		    printf("\n");
		}
		if(t!=0)
		    printf("\n");
	}
	return 0;
} 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved