Строку «Программа» превратить в «ргамамроП» - C (СИ)
Формулировка задачи:
Дана строка -предложение. Зашифровать ее, поместив вначале все символы, расположенные
на четных позициях строки, а затем, в обратном порядке, все символы, расположенные на
нечетных позициях (например, строка «Программа» превратится в «ргамамроП»).
Подскажите что не так в коде.
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
char s1[100];
int i,j=0;
printf("Enter string: ");
gets(s);
for ( i=0; i<strlen(s);i++){
if (i%2==0) strcpy(s1,s);
}
for ( i=strlen(s); i>0;i--){
if ((i%2)!=0) strcpy(s1,s);
}
printf("%s\n",s1);
return 0;
}Решение задачи: «Строку «Программа» превратить в «ргамамроП»»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
char s1[100];
int i,j,k;
printf("Enter string: ");
gets(s);
j = 0;
for ( i=1; i<strlen(s);i = i+2)
{
s1[j] = s[i];
j++;
}
if (strlen(s)%2 != 0)
{
i = strlen(s)-1;
}
else
i = strlen(s)-2;
for ( i; i>=0;i= i-2 )
{
s1[j] = s[i];
j++;
}
s1[strlen(s)]='\0';
printf("%s\n",s1);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и вводом-выводом.
- Объявление переменных: строки s и s1, а также индексы i, j, k.
- Ввод строки от пользователя с помощью функции gets().
- Инициализация счётчика символов в новой строке s1 значением 0.
- В цикле, начиная со второго символа исходной строки (исключая 1-й символ), копируются парные символы в новую строку s1.
- Если длина исходной строки нечётная, то в новую строку s1 добавляется последний символ исходной строки.
- Если длина исходной строки чётная, то в новую строку s1 добавляется предпоследний символ исходной строки.
- В обратном порядке до тех пор, пока не будут использованы все символы исходной строки, символы копируются в новую строку s1.
- Добавляется нулевой символ в конец новой строки s1.
- Выводится новая строка s1.
- Программа завершается.