仅按顺序使用字母表(A 或...)的字符算术
Character Arithmetic using only the Alphabet (A or a ...) in order
我在家自学编程。我现在对 C 感兴趣,所以这是我的第一个问题。我一直在试图弄清楚为什么我的代码没有打印出正确的答案,但我不确定哪里出了问题。我将在下面附上问题和我的代码。如果有人能帮助我找出我做错了什么,我将不胜感激。
"编写一个程序,接受一个字符串并显示它,替换其中的每个字符串
字母按字母顺序向前 13 个空格。
'z' 变为 'm','Z' 变为 'M'。案例不受影响。
输出后将跟一个换行符。
如果参数个数不为 1,则程序显示一个换行符。"
我正在使用命令行参数读取字符串“My horse is Amazing”。并且预期的输出应该是“Zl ubefr vf Nznmvat”。但我得到这个作为我的输出“Zå ubeÇr vÇ Nznçvat”。
这是我的代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv[]){
char ch, str[100], newStr[100];
int i, len;
if(argc != 2){
printf("\n");
return (-1);
}
strcpy(str, argv[1]);
len = strlen(str);
printf("%s %d\n\n", str, len);
for (i = 0; i < len; i++)
{
ch = str[i];
if ((ch >= 65) && (ch <= 90)){
ch = ch + 13;
if(ch > 90){
ch = ch - 90;
ch = ch + 64;
}
}else if ((ch >= 97) && (ch <= 122)){
ch = ch + 13;
if(ch > 122){
ch = ch - 122;
ch = ch + 96;
}
}
newStr[i] = ch;
}
printf("%s \n", newStr);
return 0;
}
ch
是一个带符号的 1 字节变量,这意味着它只能表示 -128 到 127 之间的值。将 13 添加到 y
会导致该范围之外的值。
我在家自学编程。我现在对 C 感兴趣,所以这是我的第一个问题。我一直在试图弄清楚为什么我的代码没有打印出正确的答案,但我不确定哪里出了问题。我将在下面附上问题和我的代码。如果有人能帮助我找出我做错了什么,我将不胜感激。
"编写一个程序,接受一个字符串并显示它,替换其中的每个字符串 字母按字母顺序向前 13 个空格。
'z' 变为 'm','Z' 变为 'M'。案例不受影响。
输出后将跟一个换行符。
如果参数个数不为 1,则程序显示一个换行符。"
我正在使用命令行参数读取字符串“My horse is Amazing”。并且预期的输出应该是“Zl ubefr vf Nznmvat”。但我得到这个作为我的输出“Zå ubeÇr vÇ Nznçvat”。
这是我的代码:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv[]){
char ch, str[100], newStr[100];
int i, len;
if(argc != 2){
printf("\n");
return (-1);
}
strcpy(str, argv[1]);
len = strlen(str);
printf("%s %d\n\n", str, len);
for (i = 0; i < len; i++)
{
ch = str[i];
if ((ch >= 65) && (ch <= 90)){
ch = ch + 13;
if(ch > 90){
ch = ch - 90;
ch = ch + 64;
}
}else if ((ch >= 97) && (ch <= 122)){
ch = ch + 13;
if(ch > 122){
ch = ch - 122;
ch = ch + 96;
}
}
newStr[i] = ch;
}
printf("%s \n", newStr);
return 0;
}
ch
是一个带符号的 1 字节变量,这意味着它只能表示 -128 到 127 之间的值。将 13 添加到 y
会导致该范围之外的值。