1
minami 2018 年 12 月 10 日
看样子是要打印一个 V 字,你从上到下打印,把左边越界的不要打印就行了。或者从下到上递归打印,这个留作思考
|
2
billwsy 2018 年 12 月 10 日
试着自己先说一说思路 然后大家可以引导一下?
|
3
innoink 2018 年 12 月 10 日 via Android
通用解法:自己建个二维坐标,把图像的函数表达式写出来 f(x,y)=0
然后两层 for(x...){for(y...){ putchar(" *"[f(x,y)]);}putchar('\n');} |
4
innoink 2018 年 12 月 10 日
重写一下:
for (x=0; x<...; x++) { for (y = 0; y <...; y++) { putchar("* "[f(x, y) == 0]); } putchar('\n'); } |
5
innoink 2018 年 12 月 10 日
只要建好坐标系,写出 f(x,y)的定义,套进去就行了
|
8
innoink 2018 年 12 月 10 日
#include <stdio.h>
int f(int x, int y) { if (x < 2) { return y + x - 2; } else { return y - x + 2; } } int main() { int x, y; for (y = 5; y >= 0; y--) { for (x = 0; x < 8; x++) { putchar(" *"[f(x, y) == 0]); } putchar('\n'); } return 0; } |
11
KeepPro 2018 年 12 月 10 日
printf(" *")
printf(" *") printf(" *") printf(" *") printf(" *") printf(" *") |
12
KeepPro 2018 年 12 月 10 日 printf(" *")
printf(" * ") printf(" * ") printf(" * ") printf(" * ") printf(" * * ") printf(" * * ") printf(" * ") printf(" ") 这是我上学的时候考试时候,看到宿舍的小伙伴的答案。。。至今记忆犹新。这个例子时刻提醒着我,答案有一万种可能。:Doge: |
13
KeepPro 2018 年 12 月 11 日
|
14
whoami9894 2018 年 12 月 11 日 via Android
这种打印 v 型,菱形,三角形,重点都不在代码,你把图形的数学表达式写出来再写代码就很容易了
|
17
wens07 2018 年 12 月 12 日
putchar(" *"[f(x, y) == 0]); 这种是什么用法,没见到过,或者要搜什么查看资料
|
19
wutiantong 2018 年 12 月 13 日
@wens07 f(x,y)==0 返回的 bool 值转为下标值 0/1,前面是个字符串字面量,用下标值从中取出对应 char。
|
20
wens07 2018 年 12 月 13 日
@wutiantong 哦,了解了,我去 一下没看明白, 前面那个是 str 啊
|
21
wens07 2018 年 12 月 13 日
@wutiantong 谢谢啊,之前看成 char 了,putchar 啊,我说什么东东
|