首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C語言打印心形圖案:字符畫坐標幾何與條件判斷

     編輯:程式設計綜合問答

實現原理

心形曲線方程:(x^2 + y^2 - 1)^3 - x^2 y^3 <= 0,離散化到字符網格判斷每個位置是否在心形內。

代碼實現

#include 
#include 

int main() {
    // x: -1.5 到 1.5,步長 0.05
    // y: 1.5 到 -1.5,步長 0.1 (字符高寬比約2:1)
    for (float y = 1.5f; y >= -1.5f; y -= 0.1f) {
        for (float x = -1.5f; x <= 1.5f; x += 0.05f) {
            float x2 = x * x, y2 = y * y;
            float val = (x2 + y2 - 1) * (x2 + y2 - 1) * (x2 + y2 - 1) - x2 * y2 * y;
            putchar(val <= 0.0f ? '♥' : ' '); // 或用 '*' '#'
        }
        putchar('\n');
    }
    return 0;
}

字符版簡化(無需math.h)

// 利用對稱性,僅計算上半部分
char heart[] = {
    "  ***   ***  ",
    " ***** ***** ",
    " *********** ",
    "  *********  ",
    "   *******   ",
    "    *****    ",
    "     ***     ",
    "      *      "
};
// 直接打印數組

屏幕居中顯示

// 獲取控制台寬高 (Windows API)
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
int consoleWidth = csbi.srWindow.Right - csbi.srWindow.Left + 1;
int consoleHeight = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;

// 計算心形寬高行數,打印前輸出相應空行和左側空格

輸出效果

      ♥♥♥     ♥♥♥      
    ♥♥♥♥♥♥♥♥♥♥♥♥♥    
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
    ♥♥♥♥♥♥♥♥♥♥♥♥♥    
     ♥♥♥♥♥♥♥♥♥♥♥     
      ♥♥♥♥♥♥♥♥♥      
       ♥♥♥♥♥♥♥       
        ♥♥♥♥♥        
         ♥♥♥         
          ♥          
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved