1樓:黃亮anthony
程式,首先是一種數學思維,如何用數學來表示要求的結果。
本題,以及類似的題型,都可以看成乙個座標系下的圖形輸出,每乙個要顯示的點(x,y)滿足方程y=f(x)。
上圖顯然是乙個左右對稱的圖形,把座標系y軸放在中間可以得到比較簡單的方程,比如中間直線就是 x=0,0 < y <= 5,左右直線斜率為-1和1,過0點,則y = |x|。
這樣其實已經可以得到答案了
#include
#include
intmain
()putchar
('\n');}
}如果想讓迴圈條件和行列相對應,需要從左上角開始輸出,左上角(0,0)其實是原座標系的(-4, 5)。需要做乙個座標反轉(x, -y)和乙個平移(x-4, y + 5),合併為(x - 4, 5 - y)。簡單驗證一下,左上(0,0)等於原座標的(-4, 5);右下角(8, 4)等於原座標的(5, 1)
判定點在圖上的條件為:x - 4 == 0 || 5 - y == abs(x - 4),也可以展開化簡:
x == 4 || 9 - y == x || y - 1 == x
#include
#include
intmain
()putchar
('\n');}
}還可以推廣到,常見的倒三角形
#include
#include
#define FX (y >= abs(x))
int main() {
for (int y = 4; y >= 0; --yfor (int x = -4; x <= 4; ++xputchar(" *"[FXputchar('\n'
正三角形
#include
#include
#define FX (y <= 4 - abs(x))
int main() {
for (int y = 4; y >= 0; --yfor (int x = -4; x <= 4; ++xputchar(" *"[FXputchar('\n'
以及隔行才輸出的菱形
#include
#include
#define FX (abs(y) <= 2 - abs(x / 2) && (x & 1) == 0)
int main() {
for (int y = 2; y >= -2; --yfor (int x = -4; x <= 4; ++xputchar(" *"[FXputchar('\n'
2樓:上條當麻
可以直接用syscall:
#include "unistd.h"
int main(voidchar buf = "nnnnn"write(1, buf, sizeof(bufreturn 0;}
3樓:
好傢伙,我也來乙個
題主不讓全是 printf 那就用 putchar#include
intmain
(void
)執行結果:
4樓:
不要用 printf,那我們用傳統手藝 syscall:
#include
#include
intmain()
5樓:阿五-哈默迪
這太簡單了啊
不用printf
你有puts輸出一行(自帶換行)
你有putchar輸出乙個字元
你有system呼叫shell指令碼(譬如那個 echo )
6樓:sjx233
不要全是 printf
fprintf 怎麼樣?
#include
intmain()
C語言輸入123輸出321這個程式怎麼寫?
intserver int data return int n n?int n 0 NoneType include void function void intmain include using namespace std void function void intmain include i...
這個C語言問題怎麼敲?
雪地裡的枯樹 include main printf 請輸入學生人數 n int n scanf d n 設定有多少學生 double a n 記錄學生成績 printf 請按學號從小到大輸入分數 n for int i 0 iscanf lf a i 獲取學生成績 double c 0 計算總分,...
這個c語言問題怎麼做?
混沌 0xffffffff表示的是乙個十六進製制數1.將其轉換為十進位制數 0xffffffff 16x10 7 16x10 6 16x10 0 4294967295 2.將其轉換為二進位制數 十六進製制轉換為二進位制就是直接把每位轉換成二進位制就可以了f變成二進位制 1111,則 0xffffff...