題目:列印下列圖示
* *****
** ****
*** **
**** *
*****
目前我只能做到兩邊都是對等的 請問我該怎麼解這題?
for (int num1 = 1; num1 <= 5; num1++) {
for (int num2 = 1; num2 <= num1; num2++) {
textBox2.AppendText("*");
}
textBox2.AppendText("\r");
for (int num3 = 5; num3 >= num1; num3--) {
textBox2.AppendText("*");
}
textBox2.AppendText("\r\n");
}
這樣可以成功 可是覺得寫得很不好...
for (int num1 = 1,row = 1; num1 <= 5; num1++, row++) {
for (int num2 = 1; num2 <= num1; num2++) {
textBox2.AppendText("*");
}
textBox2.AppendText("\r");
if (row >= 3) {
textBox2.AppendText(" ");
num1++;
}
for (int num3 = 5; num3 >= num1; num3--) {
textBox2.AppendText("*");
}
if (row >= 3)
{
num1--;
}
textBox2.AppendText("\r\n");
}
這是chatGPT回答的
using System;
namespace TriangleExample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Forward Triangle:");
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.WriteLine("\nReverse Triangle:");
for (int i = 5; i >= 1; i--)
{
for (int j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
}
有個東西叫"定位",C#裡叫 Console.SetCursorPosition
static void Main(string[] args)
{
for (int y = 0; y < 5; y++)
{
for (int c = 0; c <= y; c++)
{
Console.SetCursorPosition(c+1, y+1);
Console.Write("*");
}
for (int c = 5-y; c >= 1; c--)
{
Console.SetCursorPosition(15-c, y+1);
Console.Write("*");
}
}
Console.ReadKey();
}
輸出結果
* *****
** ****
*** ***
**** **
***** *
你要會變通啊,不然以後出社會走這行路會卡住
其實我主要的疑惑點是 右邊的圖形 我看不出來他的規律是什麼
可是也是謝謝你 "定位"這塊 我之前倒是沒碰過 我的方式是我的PO的第一段code 我是把它當列印一樣 一行一行去做處理
*****
****
**
*
javascript的寫法給你參考~
let str = "*";
let lat = "";
for(let i = 0; i < 5; i++){
lat = " "
for(let j = 5-i; j > 0; j--){
lat += "*"
}
console.log(str+lat)
str += "*";
}
感謝你的回應 可是我要的不是完全對稱的是像這樣的
* *****
** ****
*** **
**** *
*****
比起不完全對稱更像是對稱後替換字,右側在第三行之後都會將第一個字換成空白,可以試試加上布林作替換依據
寫法同上,加一個確認i是不是到第三行的布林&替換文字用的布林即可
let str = "*";
let lat = "";
let firstCheck = false;
let changeCheck = false;
for(let i = 0; i < 5; i++){
lat = " "
for(let j = 5-i; j > 0; j--){
if(i >= 2) firstCheck = true;
if(firstCheck && !changeCheck) {
lat += " ";
changeCheck = true;
}else lat += "*"
}
firstCheck = false;
changeCheck = false;
console.log(str+lat)
str += "*";
}
純粹使用FOR迴圈
for (int y = 0; y < 5; y++)
{
//正三角形*
for (int c = 0; c <= y; c++)
{
Console.Write("*");
}
//隱藏反三角形
for (int c = 5 - y; c > 1; c--)
{
Console.Write(" ");
}
//隱藏正三角形
for (int c = 0; c <= y; c++)
{
Console.Write(" ");
}
//反三角形*
for (int c = 5 - y; c > 0; c--)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadKey();
輸出結果:
隱藏三角形說的是這個...請參考我小畫家畫的圖