我正在读一本有关C的书,它问我的问题是:


  编写一个使用printf在屏幕上显示以下图片的程序


然后是带有星号的复选标记。所以首先想到的是编写一堆使用格式宽度说明符的printf()语句。所以我想到了这个:

int main() {
    printf("This program prints a checkmark using asteriks\n");

    char asterik = '*';


    printf("%10c\n", asterik);
    printf("%9c\n", asterik);
    printf("%8c\n", asterik);
    printf("%7c\n", asterik);
    printf("%6c\n", asterik);
    printf("%c %3c\n", asterik, asterik);
    printf("%2c %c\n", asterik, asterik);
    printf("%3c\n", asterik);

    return 0;

}


我知道这段代码很丑陋,整个9码都令人作呕,但我真的想知道是否有一种更高效,更清洁的方式?考虑到本课在第2章中问过,我不确定作者是否打算这样写,在这里我们仅讨论了一些非常基本的内容,而与之无关。 (由于K&R,我只记得如何调整宽度)

最佳答案

仅具有一个字符串文字可能会更好,如下所示:

const char checkmark[] =
    "       *\n"
    "      * \n"
    "     *  \n"
    "*   *   \n"
    " * *    \n"
    "  *     \n"
    ;

printf("%s", checkmark);

10-08 12:00