关于s1e15动手4(萌新求大大解答)
本帖最后由 小黑兹 于 2020-4-25 02:51 编辑答案:
#include <stdio.h>
int main()
{
int ch;
printf("请输入明文:");
while ((ch = getchar()) != '\n')
{
if (ch >= 'a' && ch <= 'z')
{
putchar('a' + (ch - 'a' + 3) % 26);
continue;
}
if (ch >= 'A' && ch <= 'Z')
{
putchar('A' + (ch - 'A' + 3) % 26);
continue;
}
putchar(ch);
}
putchar('\n');
return 0;
}
关于
if (ch >= 'A' && ch <= 'Z')
{
putchar('A' + (ch - 'A' + 3) % 26);
continue;
}
其中contiune跳过了什么
尝试将其去掉输出(去掉了大写中的):
请输入明文:abcxyz,ABCXYZ
defabc,DAEBFCAXBYCZ
问题:
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
没有满足两个if的时候,也就是输入了非英文字母的时候就会执行非if的putchar
为什么contiune去掉之后又输出原来的输入,这里的输入不是经过了计算吗,为什么第二次输出没有改变
后面的输出就是循环中的最后那个putchar的输出 问题1:continue的作用是但代码运行到这句时,结束后面的一切代码,重新回到while或for语句运行
问题2:可以详细一点说 问题一:最下面哪个putchar()--如果你输出的字符不满足那两个if范围内则直接打印出来你输入的字符比如(.@#%等等)
问题二: 假设你去掉第一个if中的continue, 如果你输入a则在第一个if里执行得到结果 a+3=d打印d这个字符,因为(你删掉了跳转)所以程序继续执行下面的语句,于是就读到了最下面的putchar()打印你刚刚输入的a; BngThea 发表于 2020-4-25 02:50
为什么while循环中的非if内的最后一个putchar()函数没有被跳过,或者contiune跳过了什么。
没有满足两个 ...
懂了懂了,非常感谢,脑子卡住了没想出来这么简单的,谢谢 沐丶心 发表于 2020-4-25 23:58
问题一:最下面哪个putchar()--如果你输出的字符不满足那两个if范围内则直接打印出来你输入的字符比如(.@#% ...
同样非常感谢你,答案简单明了,但可惜你来的有点迟我不能把最佳答案给你,当然我对你的回答表示非常感谢
页:
[1]