21天C语言代码训练营 —— 练习1

2016-04-30  本文已影响18人  阿债

编译环境

Win7(x64) + DMC(x86) v8.57

代码

/*
    filename:  ex01.c
    
    21天C语言代码训练营(第一天)
    http://www.jianshu.com/p/d8a5712a9b08
    
    生成30行星号(*)组成的金字塔
*/

#include <stdio.h>
#include <string.h>

#define CHAR_BLANK 32
#define CHAR_ZERO 48
#define TIMES 30

int main()
{
    char *star = "**", stars[2 * TIMES + 1] = "*";
    char *blank = "", format[] = "%00s%s%00s\n";
    int i = 1, ten = 0;
    for (; i <= TIMES; i++) {
        ten = (TIMES - i) / 10;
        format[1] = format[7] = (ten == 0) ? CHAR_BLANK : ten + CHAR_ZERO; /*十位*/
        format[2] = format[8] = (TIMES - i) % 10 + CHAR_ZERO; /*个位*/
        printf(format, blank, stars, blank);
        strcat(stars, star); /*每行增加两个*/
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读