我刚刚编写了一个程序来反转一个单词。我首先编写了如下程序:
//This program will reverse a given word
#include <stdio.h>
int main()
{
int letters, i, j;
printf("Enter the number of letters in your word: ");
scanf("%d", &letters);
int word[letters];
printf("Enter %d Letters: ", letters);
for( i = 0; i < letters; i++){
scanf("%c", &word[i]);
}
for( j = i - 1; j >= 0; j-- ){
printf("%c", word[j]);
}
return 0;
}
然后,我输入5来存储字母和单词&#34; rubel&#34; (忽略倒置的逗号)反转。预期的产量是&#34; lebur&#34;。但不幸的是我得到了ebur。然后我重新编译代码如下:
//This program will reverse a given word
#include <stdio.h>
int main()
{
int letters, i, j;
printf("Enter the number of letters in your word: ");
scanf("%d", &letters);
int word[letters];
printf("Enter %d Letters: ", letters);
for( i = 0; i < letters; i++){
scanf(" %c", &word[i]);
}
for( j = i - 1; j >= 0; j-- ){
printf("%c", word[j]);
}
return 0;
}
这次我得到的预期输出是&#34; lebur&#34;。现在,我的问题是在我没有得到预期的输出之前出了什么问题,而我刚刚做了一个空间,这次我得到了预期的结果。提前谢谢。
答案 0 :(得分:0)
在第一种情况下,word[0]
成为\n
(您输入了5\n
)。在第二种情况下,\n
被跳过,因为您告诉scanf跳过空格字符()。