K&R exercise 3.5 - C (СИ)
Формулировка задачи:
Упражнение 3.5. Напишите функцию itob(n, s, b), которая переводит целое n в строку s,
представляющую число по основанию b. В частности, itob(n, s, 16) помещает в s текст числа n в
шестнадцатеричном виде.
Аварийный останов. Не понимаю почему.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i, c; char s[30]; for (i=0; (s[i] = getchar()) != EOF; i++ ) ; s[i] = '\0'; reverse(s); for (i=0; s[i] != '\0'; i++) printf("%c", s[i]); itos(12345, s, 16); printf('\n'); for (i=0; s[i] != '\0'; i++) printf("%c", s[i]); return 0; } void itos (int n, char s[], int b) { int i = 0,k, sign; if (n < 0) { sign = '-'; n = -n; } do { n /= b; k = n % b; s[i++] = (k > 9) ? (k +'a' - 10) : k; } while (n > 0); s[i] = '\0'; reverse(s); } void reverse (char s[]) { int i, j, c; for (i = 0, j = strlen(s) - 1; i < j; i++, j--) { c = s[i]; s[i] = s[j]; s[j] = c; } }
Решение задачи: «K&R exercise 3.5»
textual
Листинг программы
while (s<t) { d=*s; *s++=*t; *t--=d;}
Объяснение кода листинга программы
- В данной строке кода присутствует условие
s<t
, которое проверяет, что значение переменнойs
меньше значения переменнойt
. - Если условие выполняется, то происходит присваивание значения переменной
d
значению переменнойs
. - Значение переменной
s
увеличивается на единицу (s++). - Значение переменной
t
уменьшается на единицу (t--). - Значение переменной
t
присваивается значение переменнойs
. - Значение переменной
s
присваивается значение переменнойd
. - Значение переменной
t
уменьшается на единицу (t--). - Значение переменной
t
присваивается значение переменнойd
. - Цикл повторяется до тех пор, пока условие
s<t
выполняется.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д