#c #logic
#c #Логические
Вопрос:
#include <stdio.h>
int main()
{
int c; /* Present Character */
int old_c; /* Previous Character */
while ((c = getchar()) != EOF) {
if (old_c == ' ' amp;amp; c != ' ') {
putchar(' ');
putchar(c);
} else if(c != ' ') {
putchar(c);
}
old_c = c;
}
return 0;
}
Я действительно не понимаю, как работает этот код. Это решение для упражнения 1.9 по языку программирования C:
Упражнение 1-9:
Напишите программу для копирования входных данных в выходные данные, заменяя каждую строку из одного или нескольких пробелов одним пробелом.
Язык программирования C 2-е издание,
Б. Керниган и Д. Ричи, Прентис Холл, страница 20.
Итак, вот моя проблема
Например, я ввожу в качестве входных данных : Hello Worldn
'n'
это не последний символ? сохранить в old_c : old_c = c;
не мог бы кто-нибудь, пожалуйста, объяснить мне, как работает код, поскольку я действительно хочу изучить язык программирования c и программирование. Я очень новичок;
Комментарии:
1. Не могли бы вы включить текст упражнения в вопрос?
2. Приведенный выше код содержит ошибку, поскольку
old_c
используется, когда он неинициализирован.3. Чтобы ответить на часть вопроса, если вы введете
Hello Worldn
в терминал,n
не будет интерпретироваться как отдельный символ новой строки, он будет считан отдельно, поэтому последний символ простоn
.4. Из вашего вопроса неясно, каков результат этой программы и какой результат вы ожидаете. Также не ясно, в чем заключается исходная проблема,
Ответ №1:
Этот код выполняет 9 действий:
- Во-первых, он объявляет некоторые переменные
c
иold_c
, - Затем он считывает ввод с клавиатуры в
c
. - После этого он проверяет,
old_c
естьили
c
нет.
- Если это так, он печатает пробел и символ, который был нажат последним.
- В противном случае он просто печатает символ, который был нажат последним.
- Затем
old_c
устанавливается вc
. - Переходите к 2, пока ввод не будет остановлен (обычно с помощью CTRL D или клавиши Enter)
- Затем он загружает возвращаемое значение (
0
, в данном случае), - и он завершается с этим возвращаемым значением.