Функция выводит не то, что ожидается - C (СИ)

Узнай цену своей работы

Формулировка задачи:

вот программка:
Листинг программы
  1. #include <math.h>
  2. float sum(int k, float x)
  3. {
  4. if (k=0) return 0;
  5. else
  6. return 1.11111;
  7. }
  8.  
  9. double y;
  10. int main()
  11. {
  12. y=sum(0,1);
  13. printf("%5f\n",y);
  14. getchar();
  15. return 0;
  16. }
По идее, написанное должно выводить 0, т.к. вызывается ф.-ия для k=0. Но выводит 1.1111, почему-то... Только что присвоил y=sum(1,0), и все равно вывелось 1.1111. что не так?

Решение задачи: «Функция выводит не то, что ожидается»

textual
Листинг программы
  1. char cx, *p;
  2. for(p=s; сx=*p; p++) {
  3.   // что-то делаем с cx
  4. }

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

В данном коде выполняется цикл по символам строки s, при этом каждый символ копируется в переменную cx. Однако, в отличие от стандартного цикла for в языке C, здесь нет инкрементации переменной p, что приводит к тому, что p всегда остается указывать на один и тот же символ строки s. Вот список действий, выполняемых в данном коде:

  1. Инициализация указателя p значением s.
  2. Установка значения cx равным значению первого символа строки s (т.е. *p).
  3. Выполнение цикла, который будет выполняться до тех пор, пока значение cx не станет равным нулю (т.е. пока не будет выполнено условие сx=*p).
  4. Внутри цикла выполняется какая-то операция с переменной cx.
  5. После выполнения цикла переменная p не инкрементируется, поэтому она всегда остается указывать на тот же символ строки s. Следует отметить, что данный код не является оптимальным и может вызвать проблемы при работе с большими строками.

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы