Переписать строку в обратном порядке - C (СИ) (79827)
Формулировка задачи:
НЕЛЬЗЯ ПОЛЬЗОВАТЬСЯ "#include<string.h">
ЗАД№1 Введите с клавиатуры строку символов, после чего запишите ее содержимое в другую строку в обратном порядке. Далее выведите вторую строку на экран. ЗАД №2 Введите с клавиатуры строку символов, после чего выведите на экран ее подстроку,включающую в себя символы с 5-го по 15-й. ЗАД №3Введите с клавиатуры строку символов, представляющую собой некоторое предложение. Найдите среди слов предложения самое длинное слово и выведите его на экран. №1 НЕ РАБОТАЕТ((( НЕ ПРАВИЛЬНО РАБОТАЕТ((((((((
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- void main()
- {
- const int n=100;
- char str[n], str2[n], *p, *k;
- int i;
- printf("vvedute stroky: ");
- gets(str);
- p=str;
- k=&str2[n];
- for(i=0;i<n;i++)
- *(k-i)=*(p+i);
- puts("\n\npreabrazovannaya stroka:\n");
- puts(str2);
- puts("\n");
- }
Решение задачи: «Переписать строку в обратном порядке»
textual
Листинг программы
- #include <stdio.h>
- int main() {
- char src[128] = "\0";
- char dst[128] = "\0";
- char* psrc = &src[sizeof(src)];
- char* pdst = &dst[0];
- /** читаем строку */
- fgets(src, sizeof(src), stdin);
- /** находим ее конец */
- for ( ; *psrc == 0; psrc-- );
- /** реверсируем */
- for ( ; psrc != &src[0]; ) {
- *pdst++ = *psrc--;
- }
- printf("%s\n", dst);
- return 0;
- }
Объяснение кода листинга программы
В этом коде:
- Создаются две строки: исходная
src
и целеваяdst
. Обе строки инициализируются нулевым символом, что является признаком пустой строки. - Указатель
psrc
инициализируется адресом последнего элемента массиваsrc
, который считается пустым, поскольку мы только что его инициализировали нулевым символом. - Указатель
pdst
инициализируется адресом первого элемента массиваdst
. - Строка
src
считывается с помощью функцииfgets()
. - Затем ищется конец строки путем цикла, который продолжается, пока не встретит нулевой символ.
- После того, как найден конец строки, начинается процесс реверса строки. Для этого используется еще один цикл, который продолжается, пока не встретит нулевой символ. В каждой итерации символ копируется из исходной строки в целевую строку.
- Наконец, отформатированная строка выводится на консоль с помощью функции
printf()
. - Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д