Функция выводит не то, что ожидается - C (СИ)
Формулировка задачи:
вот программка:
По идее, написанное должно выводить 0, т.к. вызывается ф.-ия для k=0. Но выводит 1.1111, почему-то...
Только что присвоил y=sum(1,0), и все равно вывелось 1.1111. что не так?
#include <math.h> float sum(int k, float x) { if (k=0) return 0; else return 1.11111; } double y; int main() { y=sum(0,1); printf("%5f\n",y); getchar(); return 0; }
Решение задачи: «Функция выводит не то, что ожидается»
textual
Листинг программы
char cx, *p; for(p=s; сx=*p; p++) { // что-то делаем с cx }
Объяснение кода листинга программы
В данном коде выполняется цикл по символам строки s, при этом каждый символ копируется в переменную cx. Однако, в отличие от стандартного цикла for в языке C, здесь нет инкрементации переменной p, что приводит к тому, что p всегда остается указывать на один и тот же символ строки s. Вот список действий, выполняемых в данном коде:
- Инициализация указателя p значением s.
- Установка значения cx равным значению первого символа строки s (т.е. *p).
- Выполнение цикла, который будет выполняться до тех пор, пока значение cx не станет равным нулю (т.е. пока не будет выполнено условие сx=*p).
- Внутри цикла выполняется какая-то операция с переменной cx.
- После выполнения цикла переменная p не инкрементируется, поэтому она всегда остается указывать на тот же символ строки s. Следует отметить, что данный код не является оптимальным и может вызвать проблемы при работе с большими строками.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д