试图输入一个2位数的数字,例如"35",并使输出返回"53",然而,我的代码使其输出为"5335",而不仅仅是"53"。我完全迷失了方向,几个小时来一直在寻找以前的答案,但没有成功。
#include <stdio.h>
int main (void) {
char input[2];
char output[2];
int length;
printf("Enter a two-digit positive integer: ");
scanf("%s", input);
length = sizeof(input);
int x = 0;
while(length >=0) {
length--;
output[x]=input[length];
printf("%s", output);
x++;
}
printf("The reversed number is: %s", output);
return 0 ;
}
代码中有许多内容需要更改。
-
在这种情况下,字符数组的长度必须为3,因为您的字符数组应该存储2个字符。(空终止字符"\0"增加一个字符(
-
长度变量将存储字符数组占用的字节数,但不存储数组中的字符数。你可以考虑做
length=sizeof(input(/sizeof(char(
-
执行第1点和第2点中提到的修改仍然会导致无效结果,因为您要附加到输入的第一件事是最后一个字符,该字符将是"\0",并且输出将始终是空字符串。您应该从输入字符串的倒数第二个字符开始追加,最后在输出中追加一个null终止字符。
注意:-如果你能复习一下C.的基本概念,那就太好了