鱼C论坛

 找回密码
 立即注册
查看: 884|回复: 5

[已解决]关于s1e15动手4(萌新求大大解答)

[复制链接]
发表于 2020-4-25 02:50:03 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 小黑兹 于 2020-4-25 02:51 编辑

答案:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int ch;

  5.         printf("请输入明文:");

  6.         while ((ch = getchar()) != '\n')
  7.         {
  8.                 if (ch >= 'a' && ch <= 'z')
  9.                 {
  10.                         putchar('a' + (ch - 'a' + 3) % 26);
  11.                         continue;
  12.                 }

  13.                 if (ch >= 'A' && ch <= 'Z')
  14.                 {
  15.                         putchar('A' + (ch - 'A' + 3) % 26);
  16.                         continue;
  17.                 }

  18.                 putchar(ch);
  19.         }

  20.         putchar('\n');

  21.         return 0;
  22. }
复制代码


关于

  1.                 if (ch >= 'A' && ch <= 'Z')
  2.                 {
  3.                         putchar('A' + (ch - 'A' + 3) % 26);
  4.                         continue;
  5.                 }
复制代码


其中contiune跳过了什么
尝试将其去掉输出(去掉了大写中的):

请输入明文:abcxyz,ABCXYZ
defabc,DAEBFCAXBYCZ

问题:
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变
最佳答案
2020-4-25 02:50:04
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
没有满足两个if的时候,也就是输入了非英文字母的时候就会执行非if的putchar

为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变
后面的输出就是循环中的最后那个putchar的输出

最佳答案

查看完整内容

为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。 没有满足两个if的时候,也就是输入了非英文字母的时候就会执行非if的putchar 为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变 后面的输出就是循环中的最后那个putchar的输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-25 02:50:04 | 显示全部楼层    本楼为最佳答案   
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
没有满足两个if的时候,也就是输入了非英文字母的时候就会执行非if的putchar

为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变
后面的输出就是循环中的最后那个putchar的输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-25 23:38:56 | 显示全部楼层
问题1:continue的作用是但代码运行到这句时,结束后面的一切代码,重新回到while或for语句运行
问题2:可以详细一点说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-25 23:58:12 | 显示全部楼层
问题一:最下面哪个putchar()--如果你输出的字符不满足那两个if范围内则直接打印出来你输入的字符比如(.@#%等等)
问题二: 假设你去掉第一个if中的continue, 如果你输入a则在第一个if里执行得到结果 a+3=d打印d这个字符,因为(你删掉了跳转)所以程序继续执行下面的语句,于是就读到了最下面的putchar()打印你刚刚输入的a;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-26 00:19:21 | 显示全部楼层
BngThea 发表于 2020-4-25 02:50
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
没有满足两个 ...

懂了懂了,非常感谢,脑子卡住了没想出来这么简单的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-26 00:21:15 | 显示全部楼层
沐丶心 发表于 2020-4-25 23:58
问题一:最下面哪个putchar()--如果你输出的字符不满足那两个if范围内则直接打印出来你输入的字符比如(.@#% ...

同样非常感谢你,答案简单明了,但可惜你来的有点迟我不能把最佳答案给你,当然我对你的回答表示非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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