База ответов ИНТУИТ

Основы программирования

<<- Назад к вопросам

Прототип функции, которая ищет вхождение строкиs2 в строку s1,выглядит следующим образом:
    int find(char *s1, char *s2);
функция возвращает смещение подстрокиs2 относительно начала строки s1в случае успеха или (-1) в случае неудачи.Можно ли воспользоваться функцией find в приведенном нижефрагменте программы(будут ли выданы сообщения об ошибках или предупрежденияпри компиляции этого фрагмента)?
    void f(char s[1024], const char p[64]) {        int pos = find(s, p);        . . .    }

(Отметьте один правильный вариант ответа.)

Варианты ответа
Нельзя (при компиляции этого фрагмента будут выданы сообщения об ошибках или предупреждения). (Верный ответ)
Можно (при компиляции этого фрагмента сообщений об ошибках или предупреждений не будет).
Похожие вопросы
Прототип функции, которая вычисляет сумму элементов массива aдлины n, выглядит следующим образом:
    double sum(const double *a, int n);
Можно ли в описании этой функции и ее прототипа опустить слово const?(Могут ли при этом в корректной программе возникнутьошибки или предупреждения на стадии компиляции?)
Прототип функции, вычисляющей степень n числа a,выглядит следующим образом:
    double power(const double a, const double n);
Можно ли в описании этой функции и ее прототипа опустить слова const?(Могут ли при этом в корректной программе возникнутьошибки или предупреждения на стадии компиляции?)
Пусть описан тип R2Vector, представляющий векторна плоскости с вещественными координатами,
    typedef struct {        double x;        double y;    } R2Vector;
также описаны три переменныеu, v и w типа вектори вещественная переменная s:
    R2Vector u, v, w;    double s;
при этом переменная u содержат конкретный векторединичной длины, а вектор v получается изu вращением на 30 градусов по часовойстрелке. Указать, чему будет приблизительно равнозначение вещественной переменной s в результатевыполнения следующего фрагмента программы:
    w.x = (-u.y); w.y = u.x;    s = v.x * w.x + v.y * w.y;
В функции f языка Си описана одна целочисленнаяпеременная z:
    int f(int x, int y) {        int z;        . . .    }
Локальные переменные и аргументы функцииадресуются относительно регистра FP, т.е. их адресаравны сумме содержимого FP и константы, задающей смещение.Чему равен адрес переменной z?
Пусть описан тип R2Vector, представляющий векторна плоскости с вещественными координатами:
    typedef struct {        double x;        double y;    } R2Vector;
также описаны три переменные u, v и wтипа вектор и вещественная переменная s:
    R2Vector u, v, w;    double s;
при этом переменная u содержат конкретный векторединичной длины. Указать, чему будетприблизительно равно значение переменной s врезультате выполнения следующего фрагмента программы:
    v.x = (-u.y);    v.y = u.x;    w.x = u.x + v.x;    w.y = u.y + v.y;    s = sqrt(w.x * w.x + w.y * w.y);
(функция sqrt извлекает квадратный корень из вещественногочисла).
Пусть описан тип R2Vector, представляющий векторна плоскости с вещественными координатами:
    typedef struct {        double x;        double y;    } R2Vector;
также описаны три переменные u, v иw типа вектор и вещественная переменная s:
    R2Vector u, v, w;    double s;
при этом известно, что переменные u и vсодержат два конкретныхвектора единичной длины.Пусть в результате выполнения следующего фрагмента программызначение переменной s приблизительно равно 0.7071,т.е. корню из двух, деленному пополам:
    w.x = (-u.y); w.y = u.x;    s = v.x * w.x + v.y * w.y;    // s == 0.7071
На какой угол надо повернуть вектор u,чтобы получить вектор v?
Рассмотрим два способа представления матрицы размера4×4. В первом случае используется массив из четырехэлементов типа «указатель на double»:
    double *a[4];
при этом элемент a[i] содержит адресначала i-й строки матрицы.Во втором случае используется линейный массив из шестнадцатиэлементов:
    double a[16];
В первом случае обращение к элементу матрицы с индексамиi, j осуществляется с помощью выражения
    a[i][j],
во втором — с помощью выражения
    a[4*i + j].
Есть ли существенная разница в эффективности программыв первом и втором случаях при использовании оптимизирующегокомпилятора?
Рассмотрим следующий фрагмент программы:
#include <string.h>#include <сtype.h>. . .    int n, i;    char a[32];    strcpy(a, "11B");    n = 0; i = 0;    while (a[i] != 0) {        n *= 16;        if (isdigit(a[i])) {            n += a[i] - '0';        } else if ('A' <= a[i] && a[i] <= 'F') {            n += (a[i] - 'A') + 10;        }        ++i;    }
Чему будет равно значение переменной nв результате выполнения этого фрагмента?
Рассмотрим следующий фрагмент программы:
#include <string.h>#include <сtype.h>. . .    int n, i;    char a[32];    strcpy(a, "20e");    n = 0; i = 0;    while (a[i] != 0) {        n *= 16;        if ('a' <= a[i] && a[i] <= 'f') {            n += (a[i] - 'a') + 10;        } else if (isdigit(a[i])) {            n += a[i] - '0';        }        ++i;    }
Чему будет равно значение переменной nв результате выполнения этого фрагмента?
Рассмотрим следующий фрагмент программы:
#include <string.h>. . .    int n;    char a[32];    strcpy(a, "abcdefgh" + 5);    strcpy(a + 4, "1234");    n = strlen(a);
Чему будет равно значение переменной nв результате выполнения этого фрагмента?