小甲鱼教程中有一个横向输出字符的练习题,要求输出下面这种效果:
FISH
感觉自己的解法还蛮简洁的,在这里简单地说一下。
基本思路:因为要求横向输出,所以肯定是要
- <四个字母第一行>`
- <四个字母第二行>
- ...
- <四个字母第七行>
因此定义一个指针数组用来保存一个大字母,打印的时候一行一行的取出。
void F_ch(int i, int n)
{
char *f_ch[7] = {
"########",
"## ",
"## ",
"###### ",
"## ",
"## ",
"## "
};
printf("%s", f_ch[i]);
while (n-- > 0)
{printf(" ");}
}
main函数用于循环调用上面的子函数,一次打印一行,一行结束后打印一个'\0'.
完整代码如下:
#include <stdio.h>
void F_ch();
void I_ch();
void S_ch();
void H_ch();
void F_ch(int i, int n)
{
char *f_ch[7] = {
"########",
"## ",
"## ",
"###### ",
"## ",
"## ",
"## "
};
printf("%s", f_ch[i]);
while (n-- > 0)
{printf(" ");}
}
void I_ch(int i, int n)
{
char *i_ch[7] = {
"####",
" ## ",
" ## ",
" ## ",
" ## ",
" ## ",
"####"
};
printf("%s", i_ch[i]);
while (n-- > 0)
{printf(" ");}
}
void S_ch(int i, int n)
{
char *s_ch[7] = {
" ###### ",
"## ##",
"## ",
" ###### ",
" ##",
"## ##",
" ###### "
};
printf("%s", s_ch[i]);
while (n-- > 0)
{printf(" ");}
}
void H_ch(int i, int n)
{
char *h_ch[7] = {
"## ##",
"## ##",
"## ##",
"#########",
"## ##",
"## ##",
"## ##"
};
printf("%s", h_ch[i]);
while (n-- > 0)
{printf("\n");}
}
int main()
{
int i, n;
n = 5;
for (i = 0; i < 7; i++)
{
F_ch(i, n);
I_ch(i, n);
S_ch(i, n);
H_ch(i, n);
printf("\n");
}
return 0;
}
网友评论