愈伤组织 发表于 2019-2-16 22:34:07

求助作业s1E3printf()打印飞机中的一些不理解的地方

本帖最后由 愈伤组织 于 2019-2-16 22:35 编辑

#include<stdio.h>

int main()

{
    printf("         @\n");
    printf("      / \ \n");
    printf("      * *\n");
    printf("      * *\n");
    printf("      * *\n");
    printf("    * * * * * *\n");
    printf("* * * * * * * *\n");
    printf("* * * * * * * * * *\n");
    printf("      * *      \n");
    printf("      * *      \n");
    printf("      * * * *\n");
    printf("    * * * * * *");
    return 0;
}

这个结果是



#include<stdio.h>

int main()

{
    printf("         @\n");
    printf("      / \\ \n");
    printf("      * *\n");
    printf("      * *\n");
    printf("      * *\n");
    printf("    * * * * * *\n");
    printf("* * * * * * * *\n");
    printf("* * * * * * * * * *\n");
    printf("      * *      \n");
    printf("      * *      \n");
    printf("      * * * *\n");
    printf("    * * * * * *");
    return 0;
}

我上网查看了转义字符也就那么几个

愈伤组织 发表于 2019-2-16 22:36:06

这跟转义字符没有关系吧?

jackz007 发表于 2019-2-16 22:42:32

本帖最后由 jackz007 于 2019-2-16 22:46 编辑

   没有问题呀,楼主想求助什么?

   '\' 是转义前导字符,任何时候,如果想表达字符 '\'本身,必须经过转义,用 '\\' 来表示。

    如:"C:\\Windows\\System32\\NotePad.exe"

ba21 发表于 2019-2-16 22:46:26

看了关天,你到底哪里不理解,能说清楚点?

TCY 发表于 2019-2-17 11:05:31

反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了)

愈伤组织 发表于 2019-2-17 20:19:51

TCY 发表于 2019-2-17 11:05
反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了)

\+space 转义字符里不是没有这个控制字符的吗?

愈伤组织 发表于 2019-2-17 20:20:29

ba21 发表于 2019-2-16 22:46
看了关天,你到底哪里不理解,能说清楚点?

你看图片就能知道了

ba21 发表于 2019-2-17 20:53:01

愈伤组织 发表于 2019-2-17 20:20
你看图片就能知道了

看图?
\\ 和 \是不是?你会叫我看图,你难道不会对比代码?

明显就是\ 把 \转入,使得能免输出1个字符'\'
\ ,后面有个空格,就是空格原样输出。有还有什么不明白?

时雨059905 发表于 2019-2-17 21:37:47

本帖最后由 时雨059905 于 2019-2-20 23:43 编辑

愈伤组织 发表于 2019-2-17 20:19
\+space 转义字符里不是没有这个控制字符的吗?

刚刚发现说的有点bug,来重新说一下-_-
编译器是一个一个字符一个字符读取的东西
我觉得应该是编译器读到“\”这个字符,就执行这个字符的命令
我记得小甲鱼好像说过,“\”这个字符所代表的命令是“将本行代码与下一行连在一起,为了防止代码太长的情况出现”,所以这里“\”这个字符执行了它的命令(就是前面说的那个),之后就消失了,然后打印后面的空格字符并执行转义字符“\n”的命令

愈伤组织 发表于 2019-2-17 22:30:57

ba21 发表于 2019-2-17 20:53
看图?
\\ 和 \是不是?你会叫我看图,你难道不会对比代码?



\\ 和 \+space 然后输出的结果就截然不容了
我不太好用语言描述这个问题
空格原样输出以后为什么不在执行换行的\n控制字符了?

愈伤组织 发表于 2019-2-17 22:35:33

jackz007 发表于 2019-2-16 22:42
没有问题呀,楼主想求助什么?

   '\' 是转义前导字符,任何时候,如果想表达字符 '\'本身,必 ...

但是第一幅图片用代码printf(“/ \ \n”);输出的结果就少了一条\

愈伤组织 发表于 2019-2-17 22:37:31

时雨059905 发表于 2019-2-17 21:37
刚刚发现说的有点bug,来重新说一下-_-
我觉得应该是编译器读到“\”这个字符,就执行这个字符的命令
...

说的好像有道理,但是我要验证一下子,可是我太忙了呜呜

时雨059905 发表于 2019-2-17 23:15:54

愈伤组织 发表于 2019-2-17 22:37
说的好像有道理,但是我要验证一下子,可是我太忙了呜呜

{:10_306:}楼主噶油啊

TCY 发表于 2019-2-18 15:53:26

\+space=space

ba21 发表于 2019-2-18 20:09:43

愈伤组织 发表于 2019-2-17 22:30
\\ 和 \+space 然后输出的结果就截然不容了
我不太好用语言描述这个问题
空格原样输出以后为什么不在执 ...

\\表示输出 1个'\' 能懂?
\ 后面如果不是转义字符,原样输出。能懂?

这都不明白,让人感觉是是不是对牛弹琴

愈伤组织 发表于 2019-2-18 22:22:47

本帖最后由 愈伤组织 于 2019-2-18 22:38 编辑

时雨059905 发表于 2019-2-17 23:15
楼主噶油啊

#include <stdio.h>
int main()
{   printf("我是 \ ");
    printf("谁");
    return 0;
}


#include <stdio.h>
int main()
{   printf("我是 \
   谁?      ");

    return 0;
}
你的说法是成立的哈哈,能重新组织下语言吗?我要把你的解答设置为最佳解答

愈伤组织 发表于 2019-2-18 22:32:04

本帖最后由 愈伤组织 于 2019-2-18 22:37 编辑

ba21 发表于 2019-2-18 20:09
\\表示输出 1个'\' 能懂?
\ 后面如果不是转义字符,原样输出。能懂?



我不能苟同你的回答
#include <stdio.h>
int main()
{   printf("我是一个\.什么样的人\n");
    return 0;
}

#include <stdio.h>
int main()
{   printf("我是 \
   谁?      ");

    return 0;
}
#include <stdio.h>
int main()
{   printf("我是 \
   谁?      \n");
   printf("我是\=-0 \n");
   printf("谁");


    return 0;
}
这些例子都证明了一个问题单独一个\+一串字符如果是转义字符就当做转义字符处理,如果不是就当做连接后面字符串的作用。

时雨059905 发表于 2019-2-19 22:11:39

愈伤组织 发表于 2019-2-18 22:22
你的说法是成立的哈哈,能重新组织下语言吗?我要把你的解答设置为最佳解答

哈哈 你觉得我那个哪里说得不是很明白呢

愈伤组织 发表于 2019-2-20 21:53:36

时雨059905 发表于 2019-2-19 22:11
哈哈 你觉得我那个哪里说得不是很明白呢

我觉得要把这个问题说得更清楚一些,供后者借鉴

时雨059905 发表于 2019-2-27 20:53:56

愈伤组织 发表于 2019-2-20 21:53
我觉得要把这个问题说得更清楚一些,供后者借鉴

嗯哼 我改完啦 你看看有啥问题吧
页: [1]
查看完整版本: 求助作业s1E3printf()打印飞机中的一些不理解的地方