C 语言萌新求助,卡住了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
station
V2EX    C

C 语言萌新求助,卡住了

  •  
  •   station 2018 年 12 月 10 日 3615 次点击
    这是一个创建于 2597 天前的主题,其中的信息可能已经有所发展或是发生改变。

    C 语言一些基础语法和细节也有了一定的了解,于是开始刷书上的题目

    最下面注释掉的是最终要打印出来的结果

    头脑好乱,画圆圈的地方,不知道该怎么写了

    if() 那里写了一点,觉得不对又给删了

    FJQ8G4.png

    21 条回复    2018-12-13 17:14:47 +08:00
    minami
        1
    minami  
       2018 年 12 月 10 日
    看样子是要打印一个 V 字,你从上到下打印,把左边越界的不要打印就行了。或者从下到上递归打印,这个留作思考
    billwsy
        2
    billwsy  
       2018 年 12 月 10 日
    试着自己先说一说思路 然后大家可以引导一下?
    innoink
        3
    innoink  
       2018 年 12 月 10 日 via Android
    通用解法:自己建个二维坐标,把图像的函数表达式写出来 f(x,y)=0
    然后两层 for(x...){for(y...){ putchar(" *"[f(x,y)]);}putchar('\n');}
    innoink
        4
    innoink  
       2018 年 12 月 10 日
    重写一下:
    for (x=0; x<...; x++) {
    for (y = 0; y <...; y++) {
    putchar("* "[f(x, y) == 0]);
    }
    putchar('\n');
    }
    innoink
        5
    innoink  
       2018 年 12 月 10 日
    只要建好坐标系,写出 f(x,y)的定义,套进去就行了
    station
        6
    station  
    OP
       2018 年 12 月 10 日
    @billwsy 我想的是用 if 来判断到第三行的时候来输出,并在最后一行前结束
    station
        7
    station  
    OP
       2018 年 12 月 10 日
    @innoink 前面我只是在读语法,基本没写过题。。。。 小本本几下,好好理解下
    innoink
        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;
    }
    billwsy
        9
    billwsy  
       2018 年 12 月 10 日
    @station 那就试着写写看 ```if (不到第三行) { 打印一个星号 } else { 打印两个星号 }``` 这样的思路
    billwsy
        10
    billwsy  
       2018 年 12 月 10 日
    @innoink 这个代码很 C 语言=]
    KeepPro
        11
    KeepPro  
       2018 年 12 月 10 日
    printf(" *")
    printf(" *")
    printf(" *")
    printf(" *")
    printf(" *")
    printf(" *")
    KeepPro
        12
    KeepPro  
       2018 年 12 月 10 日   2
    printf(" *")
    printf(" * ")
    printf(" * ")
    printf(" * ")
    printf(" * ")
    printf(" * * ")
    printf(" * * ")
    printf(" * ")
    printf(" ")

    这是我上学的时候考试时候,看到宿舍的小伙伴的答案。。。至今记忆犹新。这个例子时刻提醒着我,答案有一万种可能。:Doge:
    KeepPro
        13
    KeepPro  
       2018 年 12 月 11 日
    whoami9894
        14
    whoami9894  
       2018 年 12 月 11 日 via Android
    这种打印 v 型,菱形,三角形,重点都不在代码,你把图形的数学表达式写出来再写代码就很容易了
    pkookp8
        15
    pkookp8  
       2018 年 12 月 11 日 via Android
    @KeepPro 记得 leetcode 就是有一题第一名就靠穷举把测试用例举完了
    KeepPro
        16
    KeepPro  
       2018 年 12 月 11 日
    @pkookp8 嗯嗯,我当时看到这种解法,当时也是惊为天人。不过这种只能算是雕虫小技了 233
    wens07
        17
    wens07  
       2018 年 12 月 12 日
    putchar(" *"[f(x, y) == 0]); 这种是什么用法,没见到过,或者要搜什么查看资料
    wens07
        18
    wens07  
       2018 年 12 月 13 日
    没人回复,大神能解答下不 @innoink
    wutiantong
        19
    wutiantong  
       2018 年 12 月 13 日
    @wens07 f(x,y)==0 返回的 bool 值转为下标值 0/1,前面是个字符串字面量,用下标值从中取出对应 char。
    wens07
        20
    wens07  
       2018 年 12 月 13 日
    @wutiantong 哦,了解了,我去 一下没看明白, 前面那个是 str 啊
    wens07
        21
    wens07  
       2018 年 12 月 13 日
    @wutiantong 谢谢啊,之前看成 char 了,putchar 啊,我说什么东东
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     958 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:01 PVG 04:01 LAX 12:01 JFK 15:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86