C程序员如何申请加薪?呵呵

本文介绍了一种使用C语言编写的ASCII艺术生成器,通过巧妙地利用字符编码和字符串操作来实现特定的文本图案输出。文章包含两个示例程序:一个是生成ASCII艺术的程序,另一个则是展示如何使用该艺术进行编译输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果老板会编译程序的话,发下面这段代码给他:

#include <stdio.h> int main() { int a,b,c; for (c=0,b=0;a="BCCB{BC@BDBBCEFCCBDECFDDBBCBBBC@BBABABBBCBDBBBBBBBCBBBCBBBBACBABCBC@BBBDBBCBDBBBBBBBCBBBCBBBAAECI@BBCCCEEBBBBBCECBCBCDDBEBC@}BK@"[b++];) for(; a-- > 64 ; ) putchar ( ++c==74 ? c=0,10 : b&1?32:36); return 0; }

执行结果:


怎么样?主意不错吧?祝你成功!

上面程序的数字74是换行符所在的位置,其它数字找一个ASCII码表对照着看就明白了。弄懂之后,就可以随心所欲地实现其它显示效果了,关键是上面的字符串是怎样产生的呢?请看下面的程序,注释足够清晰了,不解释:

#include <stdio.h> int main() { char signature[6][128]; strcpy(signature[0], "$$ $$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$"); strcpy(signature[1], "$$ $$ $$$ $$$$$$ $$$ $$$$ $$$ $$$$ $$ $$$ $$ $$"); strcpy(signature[2], "$$ $ $ $$ $$$ $$$$ $$ $$ $$ $$$ $$ $$$ $$ $$ $$$ $ $$$ $$"); strcpy(signature[3], "$$ $$ $$ $$$ $$$$ $$ $$ $$ $$$ $$ $$$ $$ $ $$$$$ $$$$$$$$"); strcpy(signature[4], "$$ $$$ $$$ $$$$$ $$ $$ $$$ $$$ $$$ $$$ $$$$ $$$$$ $$"); strcpy(signature[5], "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$"); char output[256]; memset(output, 0, sizeof(output)); int i, j = 0; for (i = 0; i < 6; i++) { char *p = signature[i]; while ( p ) { char *p1 = strchr(p, ' '); if ( p1 ) { output[j++] = p1 - p + 64; // assume every line ends with $, p always not null p = strchr(p1, '$'); output[j++] = p - p1 + 64; } else { // +1 for the newline character will "eat" one character output[j++] = strlen(p) + 64 + 1; output[j++] = 64; // end of current line, switch to next line p = NULL; } } } printf("%s\n", output); return 0; }

受ASCII码取值范围的限制,这种小伎俩不适宜显示太复杂的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值