鱼C论坛

 找回密码
 立即注册
查看: 2225|回复: 19

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

[复制链接]
发表于 2019-2-16 22:34:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 愈伤组织 于 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-17 21:37:47
本帖最后由 时雨059905 于 2019-2-20 23:43 编辑
愈伤组织 发表于 2019-2-17 20:19
\+space 转义字符里不是没有这个控制字符的吗?


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

使用道具 举报

 楼主| 发表于 2019-2-16 22:36:06 | 显示全部楼层
这跟转义字符没有关系吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-16 22:42:32 | 显示全部楼层
本帖最后由 jackz007 于 2019-2-16 22:46 编辑

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

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

    如:"C:\\Windows\\System32\\NotePad.exe"  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-16 22:46:26 | 显示全部楼层
看了关天,你到底哪里不理解,能说清楚点?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-17 11:05:31 | 显示全部楼层
反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-17 20:19:51 | 显示全部楼层
TCY 发表于 2019-2-17 11:05
反斜杠+空格=什么情况下都不会忽略的空格(也就是说,反斜杠被用于转义了)

\+space 转义字符里不是没有这个控制字符的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-17 20:20:29 | 显示全部楼层
ba21 发表于 2019-2-16 22:46
看了关天,你到底哪里不理解,能说清楚点?

你看图片就能知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-17 20:53:01 | 显示全部楼层
愈伤组织 发表于 2019-2-17 20:20
你看图片就能知道了

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

明显就是\ 把 \转入,使得能免输出1个字符'\'
\ ,后面有个空格,就是空格原样输出。有还有什么不明白?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-17 21:37:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 时雨059905 于 2019-2-20 23:43 编辑
愈伤组织 发表于 2019-2-17 20:19
\+space 转义字符里不是没有这个控制字符的吗?


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

使用道具 举报

 楼主| 发表于 2019-2-17 22:30:57 | 显示全部楼层
ba21 发表于 2019-2-17 20:53
看图?
\\ 和 \是不是?你会叫我看图,你难道不会对比代码?

\\ 和 \+space 然后输出的结果就截然不容了
我不太好用语言描述这个问题
空格原样输出以后为什么不在执行换行的\n控制字符了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-17 22:35:33 | 显示全部楼层
jackz007 发表于 2019-2-16 22:42
没有问题呀,楼主想求助什么?

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

但是第一幅图片用代码printf(“/ \ \n”);输出的结果就少了一条\
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

说的好像有道理,但是我要验证一下子,可是我太忙了呜呜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-17 23:15:54 | 显示全部楼层
愈伤组织 发表于 2019-2-17 22:37
说的好像有道理,但是我要验证一下子,可是我太忙了呜呜

楼主噶油啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-18 15:53:26 | 显示全部楼层
\+space=space
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

这都不明白,让人感觉是是不是对牛弹琴
2019218_200647.png
2019218_200854.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-18 22:22:47 | 显示全部楼层
本帖最后由 愈伤组织 于 2019-2-18 22:38 编辑

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

    return 0;
}
你的说法是成立的哈哈,能重新组织下语言吗?我要把你的解答设置为最佳解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;
}
这些例子都证明了一个问题单独一个\+一串字符如果是转义字符就当做转义字符处理,如果不是就当做连接后面字符串的作用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

哈哈 你觉得我那个哪里说得不是很明白呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-20 21:53:36 | 显示全部楼层
时雨059905 发表于 2019-2-19 22:11
哈哈 你觉得我那个哪里说得不是很明白呢

我觉得要把这个问题说得更清楚一些,供后者借鉴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 20:53:56 | 显示全部楼层
愈伤组织 发表于 2019-2-20 21:53
我觉得要把这个问题说得更清楚一些,供后者借鉴

嗯哼 我改完啦 你看看有啥问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 08:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表