Как напечатать введенную строку назад в C, используя только цикл for - PullRequest
1 голос
/ 02 декабря 2010

Я хочу напечатать строку в обратном направлении. Но мой код, кажется, отсчитывает алфавит от последней буквы в массиве до первой буквы в массиве вместо того, чтобы считать сам массив и выплевывать каждую букву в массиве.

Мой код,

   #include <stdio.h>
   #include <string.h>

   int main(void) {

char word[50];
char end;
char x;

printf("Enter a word and I'll give it to you backwards: ");

scanf("%s", word);

end = strlen(word) - 1;

for (x = word[end]; x >= word[0]; x--) {
    printf("%c", x);
}

return 0;
}

Есть предложения? Спасибо.

Ответы [ 6 ]

6 голосов
/ 02 декабря 2010

То, что у вас есть петли между значениями элементов массива. Вы хотите зациклить между индексами массива. Обновите ваш цикл следующим образом:

for (x = end; x >= 0; --x) {
    printf("%c", word[x]);
}

Обратите внимание, что это идет от последнего индекса к нулю и выводит символ с этим индексом. Также микрооптимизация в цикле for с использованием предварительного декремента.

3 голосов
/ 02 декабря 2010

Вы вызываете значения массива, а не определенный индекс.

for(x = end; x >= 0; x--) { printf("%c", word[x]); }
1 голос
/ 02 декабря 2010

Вы хотите вывести word[x] (x-й символ в массиве) вместо x (x-й символ в наборе символов).

Вы также хотите вести обратный отсчет, а не символы.

for(x=end, x >= 0; x--)
    printf("%c", word[x]);
0 голосов
/ 11 октября 2017
#include <stdio.h>
#include <stdlib.h>

/*
 * 
 */
int main(int argc, char** argv) {
    int i;
    char letters[3]="";
    printf("Enter three letters!");
    scanf("%s",letters);
    for(i=3;i>=0;i--){
        printf("%c", letters[i]);
    }
    return (EXIT_SUCCESS);
}
0 голосов
/ 18 мая 2014
//Change end to int type and modify your for loop as shown.
#include <stdio.h>
#include <string.h>

int main(void) 
{

char word[50];
int end;
char x;

printf("Enter a word and I'll give it to you backwards: ");

scanf("%s", word);

end = strlen(word) - 1;

 for (x = end; x >= 0; x--) 
 printf("%c",word[x] );


return 0;
}
0 голосов
/ 02 декабря 2010

В вашем цикле x - это индекс в массив символов, содержащий word.Поэтому x должно измениться с end на 0, а ссылка на массив должна быть как word[x].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...