Напишите программу, которая выводит последнее слово переданной ей символьной строки - 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: чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д