|
发表于 2018-6-19 14:34:36
|
显示全部楼层
本楼为最佳答案
因为 '\#' 字符不是一个有效的转义字符,编译器不会对这个字符转义
也就是说 '\#' 和 '#' 完全一样
至于为什么这么写,请小甲鱼老师来解释一下
@小甲鱼
这个程序应该是下面这样
- #include <stdio.h>
- #include <string.h>
- #define HEIGHT 7 // 根据下面定义,每个字母高度均是7行
- const char *letters[] = {
- "\
- ########@\
- ## @\
- ## @\
- ###### @\
- ## @\
- ## @\
- ## @\
- ",
- "\
- ####@\
- ## @\
- ## @\
- ## @\
- ## @\
- ## @\
- ####@\
- ",
- "\
- ###### @\
- ## ##@\
- ## @\
- ###### @\
- ##@\
- ## ##@\
- ###### @\
- ",
- "\
- ## ##@\
- ## ##@\
- ## ##@\
- #########@\
- ## ##@\
- ## ##@\
- ## ##@\
- ",
- "\
- ###### @\
- ## ##@\
- ## @\
- ## @\
- ## @\
- ## ##@\
- ###### @\
- "
- };
- int main()
- {
- int i, j;
- int gap;
- printf("请输入字母的间隔(空格数):");
- scanf("%d", &gap);
- // 一行一行打印
- for(i = 0; i < HEIGHT; i++)
- {
- // 打印所有字母的某一行
- for(j = 0; j < 5; j++)
- {
- // k 用于迭代每一行的‘#’字符
- int k = 0;
- // 计算出该字母每一行有多少个字符
- int len = strlen(letters[j]) / HEIGHT;
- // 计算当前打印第几行
- int line = i * len;
- // @标志着该行结束
- while(letters[j][line + k] != '@')
- {
- putchar(letters[j][line + k]);
- k++;
- }
- // 打印字母间的间隔(空格)
- int temp = gap;
- while(temp--)
- {
- putchar(' ');
- }
- }
- putchar('\n');
- }
- return 0;
- }
复制代码 |
|