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;}

Объяснение кода листинга программы

  1. В данной строке кода присутствует условие s<t, которое проверяет, что значение переменной s меньше значения переменной t.
  2. Если условие выполняется, то происходит присваивание значения переменной d значению переменной s.
  3. Значение переменной s увеличивается на единицу (s++).
  4. Значение переменной t уменьшается на единицу (t--).
  5. Значение переменной t присваивается значение переменной s.
  6. Значение переменной s присваивается значение переменной d.
  7. Значение переменной t уменьшается на единицу (t--).
  8. Значение переменной t присваивается значение переменной d.
  9. Цикл повторяется до тех пор, пока условие s<t выполняется.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5