好的我正在尝试创建一个代码,用字母表中的下一个字符串替换输入的字符串中的字符,并打印26次(所有字母旋转)
我从rot13代码中获取了帮助,稍微修改了一下它除了打印26次之外我想要的一切。我试着用for和while添加一个计数器,但我真的看起来很愚蠢,当然没有用。
这是代码
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Please Enter The Secret Code\n");
int code;
while((code = getchar())) {
code = chariot(code);
putchar(code);
}
return 0;
}
int chariot(int code)
{
if('a' <= code && code <= 'z'){
return Chariot(code,'a');
} else if ('A' <= code && code <= 'Z') {
return Chariot(code, 'A');
} else {
return code;
}
}
int Chariot(int code, int newcode){
code = (((code-newcode)+1)%26)+newcode;
return code;
}
答案 0 :(得分:1)
你需要做的是运行最后一点:
int Chariot(int code, int new code)
{
code = (((code-newcode)+1)%26)+newcode;
return code;
}
通过&#39; for&#39;循环。
它看起来应该是这样的:
int Chariot(int code, int new code)
{
for (int i = 0; i < 26; i++)
{
code = (((code-newcode)+1)%26)+newcode;
}
return code;
}
这样做是运行相同的代码26次,这是你想要的结果。对循环做一些更多的研究,因为它们会在你的生活中帮助你。
答案 1 :(得分:0)
如果您坚持按字符处理输入字符,可以在足够高的VT100兼容终端上使用它:
while (code = getchar())
{
int i;
for (i = 0; i < 26; ++i)
if (putchar(code = chariot(code)) != '\n') printf("\b\v");
if (code != '\n') printf(" \e[26A");
}
但当然,这太荒谬了。理智的解决方案是o_weisman所建议的:
首先读取整个字符串,然后才开启Chariot函数 循环中的所有字符26次在每次后打印结果 调用