Напишите программу, которая выводит последнее слово переданной ей символьной строки - C (СИ)
Формулировка задачи:
Почему не работает этот код?
#include <stdio.h> #include <string.h> int main() { char arr[400000]; int i,k; scanf("%s",&arr); k=strlen(arr); for (i=k;i>=k;i--) { if (arr[i] != ' ') printf("%c",arr[i]); } return 0; }
Решение задачи: «Напишите программу, которая выводит последнее слово переданной ей символьной строки»
textual
Листинг программы
#include "conio.h" #include "stdio.h" #include "windows.h" int main(){ SetConsoleCP(1251); SetConsoleOutputCP(1251); char * str = new char[1000]; printf("Введите строку:\n"); fgets(str, 1000, stdin); int n = -1, k; for (int i = 0; i < 1000; i++){ if (str[i] == ' '){ n = i; } if (str[i] == '\0'){ k = i; break; } } printf("Последнее слово:\n"); for (int i = n + 1; i < k; i++){ printf("%c", str[i]); } delete[] str; _getch(); return 0; }
Объяснение кода листинга программы
В этом коде:
- Строка: Вводится пользователем с помощью функции
fgets()
. - Переменная n: Используется для хранения индекса последнего пробела в строке.
- Переменная k: Используется для хранения индекса конца строки (включая символ новой строки).
- Цикл for: Проходит по каждому символу строки, начиная с 0 и заканчивая 999.
- Если str[i] == ' ': то значение переменной n устанавливается в i.
- Если str[i] == '\0': то значение переменной k устанавливается в i, и цикл прерывается.
- Цикл for: Проходит по символам от n + 1 до k - 1 (не включая пробелы и символы новой строки).
- Выводит: каждый символ с помощью функции
printf()
. - Значение переменной str освобождается с помощью функции delete[].
- Функция _getch(): используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
- Возвращает 0: чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д