Вывести самое короткое слово и его длину - C (СИ) (77864)
Формулировка задачи:
г) Вывести самое коpоткое слово и его длину. на си
#include <stdio.h> #define DLSL 80 /* макс. длина слова */ main() { char s; /* тек. символ */ char sl[DLSL]; /* тек. слово */ int i,j; /* индексы тек. символа в слове */ int psl=1; /* признак, что слово длиной до 5 симв. первое */ printf ("\n\nВведите строку символов\n"); s=getchar(); while (s!='\n') { if (s==' ') s=getchar(); else { i=0; do { sl[i++]=s; s=getchar(); } while ((s!=' ') && (s!='\n')); if (i<5) { if (psl) /* если слово первое */ { printf ("Слова длиной до 5 символов:\n"); psl=0; } for (j=0; j<i; j++) putchar(sl[j]); putchar(' '); } } } if (psl) printf ("Слов длиной до 5 символов нет"); }
Решение задачи: «Вывести самое короткое слово и его длину»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #define DELIM " \t\n" int main () { char s[] = "Hello world"; char *p; char *t; if ( *s ) { for ( p = strtok (s, DELIM), t = strdup (p) ; p ; p = strtok (NULL, DELIM) ) if ( strlen (p) < strlen (t) ) { free (t); t = strdup (p); } printf (" Min world : %s \n Len = %d \n", t, strlen (t) ); free (t); } else printf (" Min = 0\n"); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: s, p, t.
- Переменная s содержит строку
Hello world
. - В цикле for начинается обработка строки.
- Первая итерация:
a) p становится равным первому слову в строке
Hello world
(после разделения на слова). b) t становится равным копии слова, найденного на текущей итерации. - Вторая и последующие итерации: a) Если текущее слово короче, чем предыдущее, то: i) t освобождается от выделенной памяти. ii) t становится равным копии текущего слова. b) Если текущее слово длиннее или равно предыдущему, то ничего не происходит.
- Выводится самое короткое слово (t) и его длина (strlen(t)).
- t освобождается от выделенной памяти.
- Если строка пустая, то выводится
Min = 0
. - Возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д