Элементы массива связаны тем что они имеют одни и те же
4.2. Укажите, верны ли следующие утверждения. Если пет, объясните почему.
a) Массив может хранить много различный типов данных.
b) Индексы массива обычно должны иметь тип float.
c) Если количество начальных значений в списке инициализации меньше чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
d) Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
e) Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
4.3. Напишите операторы, реализующие следующие операции с массивом fractions.
a) Определите именованную константу arraySize с начальным значением 10.
b) Объявите массив с числом элементов arraySize типа float, имеющими нулевые начальные значения.
c) Назовите четвертый элемент от начала массива.
d) Обратитесь к элементу массива 4.
e) Присвойте значение 1.667 элементу массива 9.
f) Присвойте значение 3.333 седьмому элементу массива.
g) Напечатайте элементы массива 6 и 9 с двумя цифрами справа от десятичной точки и покажите, как будут выглядеть выходные данные, отображаемые на экране.
h) Напечатайте все элементы массива, используя структуру повторения for. Определите целую переменную х в качестве переменной, управляющей циклом. Покажите, как будут выглядеть выходные данные.
4.4. Напишите операторы, реализуюпще следующие операции с массивом table.
b) Элементы массива связаны тем, что они имеют одно и то же и .
c) Число, используемое для обращения к отдельному элементу массива, называется .
d) Для объявления размера массива должна использоваться , потому что она делает программу более масштабируемой.
e) Процесс упорядоченного размещения элементов в массиве называется .
f) Процесс определения значения ключа, содержащегося в массиве, называется .
g) Массив, использующий два индекса, называется .
a) Объявите массив, который должен быть массивом целых чисел и иметь три строки и три столбца. Полагайте, что определена именованная константа arraySize, равная 3.
b) Сколько элементов содержит массив?
c) Используйте структуру повторения for для задания начальных значений каждому элементу массива, равных сумме его индексов. Полагайте, что объявлены целые переменные х и у, являющиеся управляющими переменными.
d) Напишите фрагмент программы для печати каждого элемента массива table в табулированном формате с тремя строками и тремя столбцами. Полагайте, что массив получил начальные значения в объявлении
int table [arraySize] [arraySize] = , , > ;
И объявлены целые переменные х и у, являющиеся управляющими переменными. Покажите, как будут выглядеть выходные данные.
4.5. Найдите и исправьте ошибку в каждом из следующих фрагментов программ.
b) arraySize = 10; переменная arraySize бьша
объявлена как const
c) Допустим, что int b[10] = ;
d) Допустим, что a[2][2] = , >; a[l, 1] = 5;
Ответы на упражнения для самопроверки
4.1. а) массивах. Ь) имя, тип. с) индекс, d) именованная константа, е) сортировка, f) поиск, g) двумерный.
4.2. а) Неверно. ]У1ассив может хранить значения только одинакового типа.
b) Неверно. Индексы массива обязательно должны быть целыми числами или целыми выражениями.
c) Неверно. Оставшиеся элементы автоматически получают нулевые начальные значения.
e) Неверно. Отдельные элементы массива передаются вызовом по значению. Только если функции передается массив целиком, любые его модификации будут отражаться на оригинале.
4.3. а) const int arraySize = 10;
b) float fractions[arraySize] = ;
e) fractions[9] = 1.667;
f) fractions[6] = 3.333;
Выходнае данные: 3.33 1.67.
Основы алгоритмизации (ОАП) / ОАП_вопросы_к_тесту
<..if () goto m1;. >18. Что вычисляется в цикле for(s=0, i=1; i<100;i++) < cin>>x; if( x==0) break; s+=x; > 19. Написать численные значения переменных for (i=0; i>=0; i++); 20. Написать численные значения всех переменных for (i=0, d=0; i
Тема 7 Одномерные массивы 1. Дайте определение массива. 2. Как располагаются элементы массива в памяти компьютера? 3. Что такое индекс элемента массива? 4. Как проинициализировать массив? Приведите пример. 5. Как определить длину массива? 6. Как сгенрировать случайное число в заданном диапазоне? 7. C какого числа начинается нумерация элементов массива? 8. Если в программе отсутвует инициализация массива, что содержат элементы массива? 9. Сформируйте одномерный статический массив целых чисел? 10. Запишите цикл подсчета среднего арифметического элементов массива? 11. Запишите цикл подсчета максимального элемента массива? 12. Запишите цикл подсчета минимального элемента массива? 13. Существует ли в С++ проверка границ массивов? 14. Какой по счету будет элемент массива doubleArray[7]? 15. Определите общее количество памяти, выделяемой под массив int A[20] 16. Дополните предложение .Все элементы массива должны быть ________типа 17. Напишите выражение, которое определяет одномерный массив, именованный как doubleArray, типа double, содержащий 100 элементов 18. Объявите массив с числом элементов arraySize типа double, имеющими нулевые начальные значения. 19. Верно ли утверждение? Массив может хранить много различный типов данных. 20. Верно ли утверждение? Индексы массива обычно должны иметь тип float. 21. Верно ли утверждение? Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации. 22. Верно ли утверждение? Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка. 23. Дополните предложение. Элементы массива связаны тем, что они имеют одно и то же ____ 24. Обратитесь к четвертому элементу от начала массива. float fractions[ 10 ]; 25. Выберите правильное объявление массива a)int temps[31]; b)int [31] c)char name[5] 26. Что выполняет фрагмент программы… int rmin=0; int rmax=100; for(int i=0;i
Тема 8 Многомерные массивы и указатели 1. Что такое указатель? 2. Приведите формат объявления указателя? 3. Что такое ссылочный тип? 4. Как получить адрес участка памяти, выделенной переменной? 5. Что такое разыменование указателя? 6. Какие операции возможны над указателями? 7. Как связаны указатели и массивы? 8. Как обратиться к элементу массива с индексом 5, используя указатели? 9. Что такое многомерный массив? Приведите пример. 10. Как обратиться к элементу массива A[m][n], используя указатели? 11. Правильно ли написано увеличение величины, на которую указывает указатель a на единицу *a++ 12. Пусть есть mas[30][100] выразите адрес mas[22][0] двумя способами. 13. Что будет записано в y = *px + 1 ? 14. Что будет записано в y = *(px + 1)? 15. Если px указывает на x, то что означает *px = 0 ? 16. Как увеличить значение х на единицу через указатель (*px += 1 лии (*px)++)? 17. Напишите вариант функции strlen, вычисляющей длину строки через указатель 18. Если p и q указатели, когда выражение вида p < q будет истинным ? 19. Если p и q указатели, что подразумевает выражение p+q ? 20. Если p и q указывают на элементы одного и того же массива, то что означает p-q ? 21. Что означает *++p ? 22. Что делает while (*q++ = *p++) ; ?
23. | Что означает | char** cpp; ? |
24. | Что означает | int (*vp)[10]; ? |
25. | Если | |
char c1 = ‘a’; |
char* p = &c1; | |
char c2 = *p; | |
Что хранится в p и с2 ? | |
26. | Что выполняется |
int ii = 0; | |
int& rr = ii; | |
rr++; | |
27. | Является ли допустимой опреация &3 и &(x-3) ? |
28. | Могут ли указатели входить в выражения y = *ip + 1? |
q = 35. Сколько места будет выделено под масcиив Int a[2][2][3]; 36. Допускается ли суммирование двух указателей ? 37. Фрагмент программы выполняет следующие действия… int data[7]; int *pdata ; pdata = &data[0] 38. Выберите верные объявления многомерного массива a)int a[3][4]; b) int a<3.4>; c)int a [3,4]; 39. Для присвоения указателю начального значения можно использовать три значения: _____3.4>
Тема 9 Строки и указатели 1. Что такое строка? 2. Строковые данные можно задать на основе типа данных ______. 3. Описание функций работы со строками содержатся в заголовочном файле ________ 4. Определите назначение функций… strlen(char *) strcpy(char*,char*) strcat(char *,char*); 5. Фрагмент программы выполняет следующие действия… char *s, *t; while (*s++ = *t++); 6. Запишите пример поиск конца строки. 7. Запишите пример просмотр строки. 8. Запишите пример копирование строки. 9. Запишите пример добавление символа к строке. 10. Запишите строку через массив символов. char s[] = “ABCDEF”; 11. Являются ли описания char s[]; и char *s; эквивалентными ? 12. Если char *message; можно ли выполнить message = «now is the time»; ? 13. Чему равно sizeof(«asdf») ? 14. Является ли выражение тождеством strlen(s)==sizeof(s) ? 15. Что означает следeдующий фрагмент char c; int n; n = c — ‘0’; c = n + ‘0’; 16. Запишите версию стандартной функции strcmp 17. Запишите версию стандартной функции strcpy 18. Напишите выражение, которое определяет строковую переменную cit содержащую строку длиной до 20 символов. 19. Первый элемент строки это______. 20. Строковые данные можно задать на основе типа данных__________. 21. Описание функций работы со строками содержатся в заголовочном файле ________ 16
Тема 10 . Функции 1. Что такое функция? 2. В чем преимущества использования функций? 3. Приведите пример формы определения функции? 4. При объявлений функций компилятору важно знать…. 5. Какой оператор используется для возврата значения функции? 6. Перечислите свойства для локальных переменных функций 7. Перечислите существующие способы передачи аргументов функции 8. Как выполняется передача результата из функции в функцию main? 9. Как выполнить передачу параметра в функцию по адресу? 10. Как передать массив в функцию? 11. Допустимы ли в с функции, у которых при компиляции не фиксируется число параметров и может быть неизвестен тип параметров? 12. Как описать функцию не возвращаю значения? 13. Что такое формальные и фактические параметры? 14. Замените функцию double FF() < int nn; return (nn+1) ;>эквивалентным выражением 15. В чем разница между объявлением и определением функции, приведите примеры ? 16. Приведите пример обычного объявления функции и по прототипу ? 17. Область действия статической функции ? 18. Приведите пример вызова функции? 19. Функция активируется с помощью ___________ 20. Переменная, которая известна только внутри функции, в которой она определена, называется ___________ 21. Функция, которая прямо или косвенно вызывает сама себя, называется _______________ функцией. 22. В C++ можно иметь разные функции с одинаковым именем, каждая из которых оперирует с различными типами и (или) количеством аргументов. Такая функция называется ____________ 23. предоставляет возможность доступа к глобальной переменной с тем же именем, что и переменная в текущей области действия. Унарная операция разрешения области действия ______ _______ 24. ____________ позволяет компилятору проверить количество, типы и порядок следования аргументов, передаваемых функции. 25. Функция __________ используется для получения случайных чисел. 26. Переменная, объявленная вне любого блока или функции, является ________________ переменной. 27. Найдите ошибку в фрагменте программы и объясните, как можно исправить ошибку int g( void ) < cout << "Внутри функции g" << endl; int h( void )
29. Найдите ошибку в фрагменте программы и объясните, как можно исправить ошибку int sum( int n ) < if ( n == 0 ) return 0; else n + sum( n - 1 ) ; >30. Верно или нет, что все вызовы функций в C++ выполняются вызовом по значению? 31. Приведите пример функци с перменным числом аргументов. 32. Что значит параметры функции по умолчанию приведите пример? 33. Что значит перегрузка имен функций? Приведите пример.
Тема 11 Динамические многомерные массивы 1. Динамические объекты создаются при трансляции программы или при выполнении программы? 2. Какие существуют функции работы с динамической памятью? 3. Перечислите основные свойства динамических переменных? 4. Как можно организовать формирование массивов с переменными размерами ? Приведите пример 5. Что возвращает функция void * malloc(unsigned s) ? 6. Что возвращает void * calloc(unsigned n, unsigned m) ? 7. Что возвращает void *free(void p) ? 8. Сформируйте двумерный динамический массив и освободить память ? 9. В чем разница между статическим и динамическим объектом в языке программирования ? 10. Как получить доступ к динамической переменной ? Может ли она иметь имя ? 11. Чем определяется количество и размерность динамических переменных ? 12. Может ли содержать динамическая переменная указатели на другие динами переменные ? 13. Приведите пример создания простой динамической переменной типа int и ее инициализации? 14. Как использовать оператор new? 15. Как использовать оператор delete? 19
Тема 12 Структуры, объединения, битовые поля, перечисления 1. Что такое структура, приведите пример. 2. Что означает описание struct date d; 3. Дана структура инициализируйте ее. 4. Перечислите способы доступа к элементам структур. 5. Что такое вложенные структуры 6. Что такое перечисления? Приведите пример 7. Что такое битовые поля? Приведите пример 8. Что такое объединения? Приведите пример 9. Перечислите свойства структур 10. Перечислите свойства объединения 11. Перечислите свойства битовых полей. 12. Как обратиться к элементу структуры struct date *pd; 13. Если struct date *pd; как по другому можно обратиться к (*pd).year ? 14. Что может быть за конструкция если мы обращается p->q->memb 15. Если struct < int x; int *y; >*p; что делает выражение ++p->x 16. Определите массив структур. 17. Инициализируйте массив структур s truct key < char *keyword; int keycount; >keytab[] = 18. Что означает следующее определение struct < unsigned is_keyword : 1; unsigned is_extern : 1; unsigned is_static : 1; >flags; 20
Элементы массива связаны тем что они имеют одни и те же
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.1.2013
Репутация: нет
Всего: нет
Здравствуйте, помогите пожалуйста Уважаемые программисты, ответить на тест. Хотя бы на половину, заранее благодарен Вам.
Вопрос 1 (10454)
Укажите, какое из нижеследующих утверждений ложное.
1: Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
2: Если вывод осуществляется в cout, то esc-последовательность \n вызывает перемещение курсора к началу следующей строки на экране.
3: Все переменные должны быть объявлены до того, как они используются.
4: Все высказывания истинные
Вопрос 2 (10455)
Укажите, какое из нижеследующих утверждений ложное.
1: Всем переменным, когда они объявляются, должен быть присвоен тип.
2: C++ рассматривает переменные number и NuMbEr как одинаковые.
3: Объявления в теле функции C++ могут появляться почти везде.
4: Все высказывания истинные
Вопрос 3 (10456)
Укажите, какое из нижеследующих утверждений ложное.
1: Операция взятия по модулю (%) может применяться только к целым числам.
2: Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.
3: Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
4: Все высказывания истинные
Вопрос 4 (10457)
Укажите, какое из нижеследующих утверждений ложное.
1: Тело каждой функции ограничивается левой и правой фигурными скобками ( < и >).
2: Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
3: Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.
4: Все высказывания истинные
Вопрос 5 (10458)
Укажите, какое из нижеследующих утверждений истинное.
1: В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
2: Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.
3: Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
4: Указатель, объявленный как void, может быть разыменован.
Вопрос 6 (10459)
Укажите, какое из нижеследующих утверждений истинное.
1: Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
2: В операторе выбора switch должна быть метка default.
3: В операторе выбора switch в разделе default требуется оператор break.
4: Все высказывания истинные
Вопрос 7 (10460)
Укажите, какое из нижеследующих утверждений истинное.
1: Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.
2: Массив может хранить много различный типов данных.
3: Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
4: Все высказывания ложные
Вопрос 8 (10461)
Укажите, какое из нижеследующих утверждений истинное.
1: Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
2: Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
3: Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
4: Все высказывания ложные
Вопрос 9 (10462)
Укажите, какое из нижеследующих утверждений истинное.
1: Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.
2: Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
3: Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.
4: Все высказывания истинные
Вопрос 10 (10463)
Укажите, какое из нижеследующих утверждений ложно.
1: Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
2: Выражение (х > у && а < b) истинно, если х >у или а < b.
3: Все высказывания ложные
4: Индексы массива обычно должны иметь тип float.
Вопрос 11 (10464)
Выполнение каждой программы на C++ начинается с функции__________.
1: void
2: include
3: main
4: using
Вопрос 12 (10465)
Каждый оператор заканчивается__________.
1: endl
2: return
3: точкой с запятой
4: управляющей последовательностью
Вопрос 13 (10466)
Оператор________ используется для принятия решений
1: cout
2: if
3: while
4: for
Вопрос 14 (10467)
Оператор выбора________ используется для выполнения одного действия, если его условие истинно, и другого действия, если условие ложно
1: If
2: If…then
3: If…then…else
4: If…else
Вопрос 15 (10468)
Повторение набора инструкций заданное число раз называется______ повторений
1: управляемым счетчиком
2: числом
3: заданием
Вопрос 16 (10469)
Когда заранее не известно, сколько раз должна исполняться группа операторов, для прерывания повторения можно использовать________ значение
1: контрольное
2: сигнальное
3: фиктивное
4: все ответы верны
Вопрос 17 (10470)
Списки и таблицы значений хранятся в__________
1: массиве
2: указателе
3: списке
4: стандартной библиотеке
Вопрос 18 (10471)
Элементы массива связаны тем, что они имеют одни и те же _________
1: имя
2: тип
3: значения
4: размерность
Вопрос 19 (10472)
Число, используемое для обращения к отдельному элементу массива называется____________
1: тип
2: индекс+
3: значение
4: позиция
Вопрос 20 (10473)
Для объявления размера массива должна использоваться__________, потому что она делает программу более масштабируемой
1: переменная
2: константа
3: именованная константа
4: символ
Вопрос 21 (10474)
Процесс упорядоченного размещения элементов в массиве называется___________
1: сортировка
2: поиск
3: проверка
4: изменение
Вопрос 22 (10599)
Процесс определения значения ключа, содержащегося в массиве, называется___________
1: сортировка
2: поиск
3: проверка
4: изменение
Вопрос 23 (10600)
Указатель — это переменная, которая содержит в качестве своего значения __________другой переменной
1: индекс
2: адрес
3: код
4: ссылку
Вопрос 24 (10601)
Для инициализации указателя можно использовать
1: null
2: 0
3: адрес
4: все перечисленное
Вопрос 25 (10602)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным
3: отрицательным
4: все перечисленное
Вопрос 26 (10603)
Что такое идентификаторы в языке Си++ ?
1: это последовательность знаков, начинающаяся с буквы или знака подчеркивания
2: это последовательность знаков
3: это последовательность знаков, начинающаяся с буквы
4: это последовательность знаков, начинающаяся со знака подчеркивания
Вопрос 27 (10604)
В идентификаторах можно использовать
1: заглавные и строчные латинские буквы, цифры и знак подчеркивания
2: заглавные и строчные латинские буквы, цифры и знак подчеркивания
3: заглавные и строчные латинские буквы
4: заглавные и строчные латинские буквы, цифры
5: заглавные и строчные латинские буквы, знак подчеркивания
Вопрос 28 (10605)
Что является выражениями в языке Си++ ?
1: это переменные, функции и константы объединенные знаками операций
2: это переменные объединенные знаками операций
3: это функции объединенные знаками операций
4: это константы объединенные знаками операций
Вопрос 29 (10606)
Какая из операций не относится к операции сравнения?
1: (=)
2: (>)
3: (<)
4: (==)
5: (!=)
Вопрос 30 (10607)
В результате успешной компиляции текста программы на C++ с каким расширением будет получен файл?
1: .obj
2: .exe
3: .cpp
4: .h
Вопрос 31 (10608)
Если не будет указан базовый тип, то какай тип будет подразумеваться по умолчанию
1: int
2: char
3: short
4: long
Вопрос 32 (10609)
К чему применяется операция инкримента?
1: к переменным
2: к константам
3: к выражениям
4: к строкам
Вопрос 33 (10610)
К каким числам применима операция %?
1: к целым
2: к вещественным
3: и к целым и к вещественным
Вопрос 34 (10611)
Какой операции нет в C++?
1: последовательной
2: унарной
3: бинарной
4: тернарная
Вопрос 35 (10612)
Из чего состоит оператор объявления имени?
1: из названия типа и объявляемого имени
2: из названия типа
3: из объявляемого имени
Вопрос 36 (10613)
Оператор while соответствует оператору for:
1: for ( ; условие ; )
оператор
2: for ( условие; ; )
оператор
3: for ( ; ; условие)
оператор
Вопрос 37 (10614)
В языке Си++ лексема — это:
1: набор специальных символов и директив
2: множество строк, определяющих состояние программы
3: процедура, выполняющая определенные задания
4: последовательности символов языка, разделяющиеся пробелами и други¬ми неграфическими символами
Вопрос 38 (10615)
В языке Си++ указатель — это:
1: специальный значок, показывающий, что это динамическая переменная
2: символическое представление адреса ячейки памяти
3: символ, указывающий на что-либо
4: метка
Вопрос 39 (10616)
В языке Си++ литерал — это:
1: переменная зарезервированного типа
2: неизменяемый объект языка
3: строка
4: буква
Вопрос 40 (10617)
Комментарии заключаются в скобки:
1: < >
2: /* */
3: [ ]
4: /% %/
Вопрос 41 (10618)
Идентификатор — это:
1: последовательность латинских букв, цифр и символа «_», начинающаяся с буквы или символа «_»
2: неизменяемые объекты языка (константы)
3: последовательность латинских и русских букв
4: способ кодирования, допустимые преобразования над значением данной переменной
Вопрос 42 (10619)
Фактический адрес в указателях — это:
1: строка
2: указатель
3: число
4: буква
Вопрос 43 (10620)
Составной оператор — это:
1: последовательность операторов, заключенная в фигурные скобки < >
2: последовательность операторов, заключенная квадратные скобки [ ]
3: последовательность операторов, заключенная в операторные скобки begin . end
4: последовательность операторов, заключенная в круглые скобки ( )
Вопрос 44 (10621)
Спецификация типа — это:
1: задание типа переменной
2: список переменных
3: перечисление всех переменных, которые использовались в программе
4: список типов переменных, которые использовались в программе
Вопрос 45 (10622)
Логическое «не равно» обозначается:
1: <>
2: ||
3: !
4: !=
Вопрос 46 (10623)
Логическое «и» обозначается:
1: =
2: ||
3: &
4: &&
Вопрос 47 (10624)
Логическое «не» обозначается:
1: !
2: !!
3: ||
4: not
Вопрос 48 (10625)
Битовая операция инверсии битов обозначается:
1: \~
2: ~
3: >>
4:
Вопрос 49 (10626)
Битовая операция исключающего «или» обозначается:
1: \~
2: ~
3: ||
4: &&
Вопрос 50 (10627)
Операция битового «и» обозначается:
1: \~
2: ~
3: ||
4: &
Вопрос 51 (10628)
Операция битового «или» обозначается:
1: \~
2: —
3: ||
4: &
Вопрос 52 (10629)
Текстовый поток — это:
1: логическое понятие, которое система может относить к чему угодно — от дисковых файлов до терминалов
2: последовательность символов, которая организуется в строки, завершающиеся символами новой строки
3: последовательность символов, которая организуется в списки слов, завершающиеся точкой с запятой
4: текст программы
Вопрос 53 (10630)
Выражения — это:
1: конструкции, включающие константы (литералы), переменные, знаки операций, скобки для управления порядком выполнения операций, обращения к функциям
2: основные строительные блоки программы; в языке Си++ указанием на наличие выражения служит символ «точка с запятой», стоящий в конце него
3: набор символов и операций
4: операторы, выполняющие определенные действия с переменными
Вопрос 54 (10631)
Тернарное выражение — это:
1: компактный способ записи оператора WHILE/DO
2: компактный способ записи оператора IF/ELSE
3: выбор одного из нескольких вариантов
4: выражение, описывающее действия логических связывающих операторов на переменные
Вопрос 55 (10632)
Оператор-переключатель — это:
1: оператор для выбора одного из нескольких вариантов (SWITCH)
2: строка с меткой DEFAULT
3: CASE
4: BREAK
Вопрос 56 (10633)
Оператор цикла DO/WHILE является:
1: конструкцией цикла с предусловием
2: конструкцией цикла с постусловием
3: конструкцией цикла с выбором варианта
4: конструкцией цикла с перебором значений параметра
Вопрос 57 (10634)
Формальный аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная и вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры
Вопрос 58 (10635)
Фактический аргумент — это:
1: конкретное значение, присвоенное этой переменной вызывающей программой
2: переменная в вызываемой программе
3: строка, которая пишется в скобках функции
4: строка, которая пишется в скобках процедуры
Вопрос 59 (10636)
Писать # include нужно для:
1: подключения файла, содержащего макроопределения и объявления данных, необходимых для работы функций из стандартной библиотеки ввода-вывода
2: позволяет дать в программе макроопределения (или задать макросы)
3: переопределения не только константы, но и целых программных конструкций
4: замены каждого параметра в строке лексем на соответствующий аргумент макровызова
Вопрос 60 (10637)
Точка с запятой является:
1: разделителем операторов
2: частью оператора
3: ключевым знаком языка Си
4: спецсимвол
Вопрос 61 (10638)
Какой тип данных отсутствует в Си в отличие от большинства других языков:
1: Real
2: Integer
3: String
4: Char
Вопрос 62 (10639)
В языке Си++ тело функции ограничено операторными скобками:
1: begin end
2: start finish
3: []
4: <>
Вопрос 63 (10640)
В языке Си++ программа начинает выполняться с функции:
1: Start
2: Main
3: Go
4: Do
Вопрос 64 (10641)
Идентификатором будет:
1: schetchik get_line a12 Paraml _ab
2: %ab 12abc -x schetchik
3: \b ab 12abc -x schetchik
4: * ab 12abc -x schetchik
Вопрос 65 (10642)
Лидирующий нуль в литералах означает:
1: числовой шестнадцатеричный литерал
2: вещественный десятичный литерал
3: числовой восьмеричный литерал
4: целый десятичный литерал
Вопрос 66 (10643)
Символьным литералом будет:
1: «q»
2: %q
3: «s»
4: «sq»
Вопрос 67 (10644)
Строковым литералом будет
1: «sq»
2: %q
3: «s»
4: «qsqs»
Вопрос 68 (10645)
Оператор INT в Си++ применяется для:
1: переопределения диапазона целых чисел
2: преобразования переменной к целому типу
3: описания переменных целого типа
4: прибавления единицы к коду символа
Вопрос 69 (10646)
Строки в Си++ представляются в виде:
1: множества символов, стоящих в один ряд
2: одного идентификатора
3: массива элементов типа CHAR
4: символического представления ячейки памяти
Вопрос 70 (10647)
Наличие нуль-символа (\0) означает, что:
1: количество ячеек массива должно быть, по крайней мере, на одну больше, чем число символов, которые необходимо размещать в памяти
2: логическим значением переменной является «ложь»
3: количество ячеек массива должно быть на одну меньше, чем число символов, которые необходимо размещать в памяти
4: логическим значением переменной является «истина»
Вопрос 71 (10648)
Пример: val = *ptr; операция косвенной адресации * производит:
1: получение адреса
2: перенаправление адреса переменной val к переменной ptr
3: определение значения, на которое указывает ptr
4: определение значения, на которое указывает valv
Вопрос 72 (10649)
Если в цикле задано два разных условия выхода, то используется оператор:
1: CONTINUE
2: BREAK
3: GOTO
4: NEXT
Вопрос 73 (10650)
Если в выражениях встречаются операнды различных типов, то они преобразуются к общему типу в соответствии с определенными правилами. Если один из операндов имеет тип char, то:
1: другие также преобразуются к типу char и результат имеет тип Char
2: другие преобразуются к типу int и результат имеет тип int
3: во время операции присваивания значение правой части преобразуется к типу левой части, который и становится типом результата
4: остается как есть и результат будет Char
Вопрос 74 (10651)
Метки в операторе Switch должны быть:
1: указателями
2: переменной
3: константой
4: типа Char
Вопрос 75 (10652)
Используя форму обращения Function1 (x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х
Вопрос 76 (10653)
Используя форму обращения Functionl (&x), получаем:
1: передачу в функцию значения переменной х
2: передачу адреса переменной х
3: использование глобальной переменной
4: использование класса памяти х
Вопрос 77 (10654)
Тип функции определяется:
1: типом ее аргументов
2: использованием в программе
3: типом ее описания
4: типом возвращаемого ею значения
Вопрос 78 (10655)
Автоматические объекты:
1: существуют во время выполнения данного блока и теряют свои значения при выходе из него
2: хранятся вне любой функции, входящей в состав программы, и существуют в течение выполнения всей программы
3: являются объектами статического класса памяти
4: можно инициализировать только выражениями с константами и с указателями на ранее описанные объекты
Вопрос 79 (10656)
Макровызов должен состоять:
1: из списка макросов
2: из списка макропеременных
3: из списка макроимен
4: из макроимени и заключенного, в круглые скобки списка аргументов
Вопрос 80 (10657)
Каков будет результат выполнения операторов:
nrs = 22;
ptr = &nrs;
val = *ptr;
1: присваивание значения 22 переменной ptr
2: &nrs дает адрес переменной val
3: &nrs дает адрес переменной ptr
4: присваивание значения 22 переменной val
Вопрос 81 (10658)
Каков будет результат выполнения операторов:
int i,j,s;
i=j=2; /* i и j получают значение 2 */
s=(i++)+(++j);
1: i= 3,j = 2, s= 5
2: i= 3, j = 3, s = 6
3: i = 3, j = 3, s = 5
4: i = 2, j = 3, s = 5
Вопрос 82 (10659)
Каков будет результат выполнения операторов:
int х,у,а;
х=5;
у=х*2+7;
а=у/4;
1: х = 5, у = 17, а = 4,25
2: х = 5, у = 17, а = 4
3: х = 5, у = 10, а = 2,25
4: х = 5, у = 32, а = 8
Вопрос 83 (10660)
Каков будет результат выполнения операторов:
а=(у=(х=5)*2+7)/4
1: а = 4,25
2: а = 4
3: а = 2,25
4: error
Вопрос 84 (10661)
Каков будет результат выполнения операторов:
int x,y;
х=у=5;
х+=2;
y-=3;
х*=у;
х/=++у;
1: у = 3, х = 4
2: у = 4, х = 12
3: у = 12, х = 12/3
4: у = 3, х = 14
Вопрос 85 (10662)
Каков будет результат выполнения операторов:
int a,b
а = 4;
b=7;
m=(a>b)?a:b;
1: т = 4
2: m = 11
3: т = 3
4: т = 7
Вопрос 86 (10663)
Каков будет результат выполнения операторов:
int х,у
y=-4;
х=(у<0)?-у:у;
1: x = 4
2: х = -4
3: х = 0
4: x: = 8
Вопрос 87 (41969)
Инкапсуляция — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса
Вопрос 88 (41970)
Наследование — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса
Вопрос 89 (41971)
Полиморфизм — это
1: представляет собой механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то и другое от внешнего вмешательства или неправильного использования
2: позволяет использовать в дочерних классах функционал родительского класса и, в случае необходимости, дополнять его
3: представляет собой способность к изменению функционала, унаследованного от базового класса
Вопрос 90 (41972)
Интерфейс
1: представляет собой набор функций, которые реализуют класс
2: представляет собой описание набора функций
3: представляет собой описание набора функций, которые реализуют класс
4: представляет собой описание набора функций
Вопрос 91 (41973)
Класс является
1: представителем объекта
2: описанием объекта
3: частью объекта
4: реализатором объекта
Вопрос 92 (41974)
Объект является
1: конкретным описанием определенного класса
2: конкретной частью определенного класса
3: производной определенного класса
4: конкретным представителем определенного класса
Вопрос 93 (41975)
Из приведенных утверждений
а) объект является экземпляром определенного класса
б) класс является экземпляром определенного объекта
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 94 (41976)
Поля — это
1: переменные, принадлежащие классу или экземпляру класса
2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции
4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов
Вопрос 95 (41977)
Методы — это
1: переменные, принадлежащие классу или экземпляру класса
2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции
4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов
Вопрос 96 (41978)
Свойства — это
1: переменные, принадлежащие классу или экземпляру класса
2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции
4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов
Вопрос 97 (41979)
События — это
1: переменные, принадлежащие классу или экземпляру класса
2: процедуры и функции класса
3: синтаксическая надстройка, позволяющая осуществлять в форме вызов функции
4: синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов
Вопрос 98 (41980)
Переменные, принадлежащие классу или экземпляру класса — это
1: Поля
Вопрос 99 (41981)
Процедуры и функции класса — это
1: Поля
Вопрос 100 (41982)
Синтаксическая надстройка, позволяющая осуществлять в форме вызов функции — это
1: Поля
2: Методы
3: Свойства
Вопрос 101 (41983)
Синтаксическая надстройка, поддерживаемая компилятором и средой Visual Basic, которая позволяет вызывать методы других объектов — это
1: Поля
Вопрос 102 (41984)
Указатель — это переменная, которая содержит в качестве своего значения _______ другой переменной
1: Значение
Вопрос 103 (41985)
Указатель — это
1: Константа
2: Адрес
3: Переменная
Вопрос 104 (41986)
Целое, которое может быть присвоено указателю, является
1: 0
2: положительным
4: все перечисленное
Вопрос 105 (41987)
Для инициализации указателя можно использовать
1: Значение
2: Адрес
3: Выражение
Вопрос 106 (41988)
Для инициализации указателя можно использовать
1: Любое целое значение
2: Только положительное целое значение
4: Любое целое значение, только не ноль
Вопрос 107 (41989)
Для инициализации указателя можно использовать
1: null
4: все перечисленное
Вопрос 108 (41990)
Из приведенных утверждений
а) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
б) Указатель, объявленный как void, может быть разыменован
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 109 (41991)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Указатель, объявленный как void, может быть разыменован.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 110 (41992)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;
Вопрос 111 (41993)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;
3: jack and jill
Вопрос 112 (41994)
Что печатается при выполнении оператора? Предполагайте следующие объявления переменных:
char s1[ 50 ] = «jack»;
char s2[ 50 ] = «jill»;
char s3[ 50 ] , *sptr;
4: оператор содержит ошибку
Вопрос 113 (41995)
Из приведенных утверждений
а) Комментарии при выполнении программы вызывают печать компьютером на экране текста после символов //.
б) Если вывод осуществляется в cout, то esc-последовательность \n вызывает перемещение курсора к началу следующей строки на экране.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 114 (41996)
Из приведенных утверждений
а) Все переменные должны быть объявлены до того, как они используются.
б) Всем переменным, когда они объявляются, должен быть присвоен тип.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 115 (41997)
Из приведенных утверждений
а) Объявления в теле функции C++ могут появляться почти везде.
б) C++ рассматривает переменные number и NuMbEr как одинаковые.
1: верно только а
2: верно только б
3: верно только б
4: оба утверждения ложны
Вопрос 116 (41998)
Из приведенных утверждений
а) Операция взятия по модулю (%) может применяться только к целым числам.
б) Все арифметические операции *, /, %, + и — имеют одинаковый уровень приоритета.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 117 (41999)
Из приведенных утверждений
а) Пустые скобки, следующие за именем функции в прототипе, указывают, что функции для выполнения ее задачи не требуется никаких параметров.
б) Тело каждой функции ограничивается левой и правой фигурными скобками ( < и >)
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 118 (42000)
Из приведенных утверждений
а) Программа на C++, которая выводит три строки, должна содержать три оператора вывода, использующих cout.
б) Элементы данных или элемент-функции, объявленные со спецификатором доступа private, доступны для элемент-функций класса, в котором они объявлены.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 119 (42001)
Из приведенных утверждений
а) В соответствии с соглашением, имена функций начинаются с прописной буквы, и все последующие слова в имени также начинаются с прописной буквы.
б) Переменные, объявленные в теле некоторой элемент-функции, называются элементами данных и могут использоваться во всех элемент-функциях класса.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 120 (42002)
Из приведенных утверждений
а) Для исполнения программы можно использовать любой файл исходного кода, содержащий int main().
б) Указатель, объявленный как void, может быть разыменован.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 121 (42003)
Из приведенных утверждений
а) Типы аргументов в вызове функции должны быть согласованы с типами соответствующих параметров в списке параметров прототипа функции.
б) В операторе выбора switch должна быть метка default.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 122 (42004)
Из приведенных утверждений
а) В операторе выбора switch в разделе default требуется оператор break.
б) Выражение, содержащее операцию ||, истинно, если истинны оба операнда этой операции.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 123 (42005)
Из приведенных утверждений
а) Массив может хранить много различный типов данных.
б) Операция взятия адреса может быть применима только к константам, к выражениям, не дающим в качестве результата ссылки, и к переменным, объявленным с классом памяти register.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 124 (42006)
Из приведенных утверждений
а) Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации.
б) Если список инициализации содержит начальных значений больше, чем элементов массива, то это — ошибка.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 125 (42007)
Из приведенных утверждений
а) Отдельный элемент массива, который передается функции и модифицируется в этой функции, будет содержать модифицированное значение после завершения выполнения вызываемой функции.
б) Когда исполнение программы приостанавливается в контрольной точке, следующим оператором, который будет исполняться, является оператор после контрольной точки.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 126 (42008)
Из приведенных утверждений
а) Когда значение переменной изменяется, в окнах Autos и Locals оно выделяется желтым цветом.
б) Во время отладки команда Step Out исполняет все оставшиеся операторы текущей функции и возвращает управление в точку, где была вызвана функция.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 127 (42009)
Из приведенных утверждений
а) Указатели разных типов нельзя присваивать друг другу без операции приведения типа.
б) Индексы массива обычно должны иметь тип float.
1: верно только а
2: верно только б
3: верны и а, и б
4: оба утверждения ложны
Вопрос 128 (42010)
Для инициализации указателя можно использовать
2: 0
3: адрес
4: все перечисленное
1. Объявление массива
Здесь квадратные скобки являются элементом синтаксиса, а не признаком необязательности конструкции.
Объявление массива может иметь одну из двух синтаксических форм, указанных выше. Квадратные скобки, следующие за именем, – признак того, что переменная является массивом. Константное выражение, заключенное в квадратные скобки определяет число элементов в массиве. Индексация элементов массива в языке C++ начинается с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива.
Во второй синтаксической форме константное выражение в квадратных скобках опущено. Эта форма может быть использована, если в объявлении массива присутствует инициализатор, либо массив объявляется как формальный параметр функции, либо данное объявление является ссылкой на объявление массива где-то в другом месте программы. Однако для многомерного массива может быть опущена только первая размерность.
Многомерный массив, или массив массивов, объявляется путем задания последовательности константных выражений в квадратных скобках, следующей за именем:
[ ][ ] . ;
Каждое константное выражение определяет количество элементов в данном измерении массива, поэтому объявление двумерного массива содержит два константных выражение, трехмерного – три и т.д.
Массив может состоять из элементов любого типа, кроме типа void и функций, т.е. элементы массива могут иметь базовый, перечислимый, структурный тип, быть объединением, указателем или массивом.
Примеры объявлений массивов
2. Инициализация массивов
Как и простые переменные, массивы могут быть инициализированы при объявлении. Инициализатор для объектов составных типов (каким является массив) состоит из списка инициализаторов, разделенных запятыми и заключенных в фигурные скобки. Каждый инициализатор в списке представляет собой либо константу соответствующего типа, либо, в свою очередь, список инициализаторов. Эта конструкция используется для инициализации многомерных массивов.
Наличие списка инициализаторов в объявлении массива позволяет не указывать число элементов по его первой размерности. В этом случае количество элементов в списке инициализаторов и определяет число элементов по первой размерности массива. Тем самым определяется размер памяти, необходимой для хранения массива. Число элементов по остальным размерностям массива, кроме первой, указывать обязательно.
Если в списке инициализаторов меньше элементов, чем в массиве, то оставшиеся элементы неявно инициализируются нулевыми значениями. Если же число инициализаторов больше, чем требуется, то выдается сообщение об ошибке.
Примеры инициализации массивов
Обратите внимание, что не существует присваивания массиву, соответствующего описанному выше способу инициализации.
3. Работа с массивами
3.1. Доступ к элементу массива
Для доступа к конкретному элементу массива используются так называемые индексные выражения:
[ ]
Здесь квадратные скобки являются требованием синтаксисам языка, а не признаком необязательности конструкции.
Индекс массива может быть не только константой, но и выражением, которое имеет целочисленный тип, например, a [ i + 1] (здесь a должно быть именем ранее объявленного массива, а i – переменной целого типа).
Объявление массива и индексное выражение, используемое для доступа к элементу массива, имеют схожий синтаксис. Различаются они по месту в программе. Это особенно важно, когда мы определяем индекс последнего элемента массива. Как было сказано ранее, индексы элементов массива в языке C начинаются с 0, и номер последнего элемента на 1 меньше количества элементов массива. Поэтому если Вы объявили массив x из 10 элементов, Вы не можете написать индексное выражение x [10], т.к. в этом случае Вы пытаетесь обратиться к элементу с индексом 10, которого нет в Вашем массиве. Компилятор не выдаст сообщения об ошибке, но результаты работы такой программы будут непредсказуемы.
Имя массива является адресом его начала! Оно имеет тип константный указатель на . Конструкция a [ i ] эквивалентна *( a + i ) (см. лекцию 5).
Для многомерного массива надо указать соответствующее количество индексов в квадратных скобках.
3.2. Обработка массивов
Для обработки элементов массива обычно используется оператор пошагового цикла for .
Для обработки многомерного массива используется соответствующее количество циклов.
Массивы не самодостаточны в том смысле, что не гарантируется хранение информации о количестве элементов вместе с самим массивом. В большинстве реализаций С++ отсутствует проверка диапазона индексов для массивов. Таков традиционный низкоуровневый подход к массивам. Более совершенное понятие массива можно реализовать при помощи классов.
В С++ массивы тесно связаны с указателями. Имя массива можно использовать в качестве указателя на его первый элемент. Гарантируется осмысленность значения указателя на элемент, следующий за последним элементом массива. Это важно для многих алгоритмов. Но ввиду того, что такой указатель на самом деле не указывает ни на какой элемент массива, его нельзя использовать ни для чтения, ни для записи. Результат получения адреса элемента массива, предшествующего первому, не определён, и такой операции следует избегать.
Неявное преобразование имени массива в указатель на его первый элемент широко используется в вызовах функций.
Неявное преобразование массива в указатель при вызове функции приводит к потере информации о размере массива. Вызываемая функция должна каким-либо образом определить этот размер, чтобы выполнять осмысленные действия.
При объявлении многомерного массива как параметра функции можно опустить только первую размерность.
Это ограничение при желании можно обойти. Правда, при этом возникают другие проблемы (см. пример 3 в конце лекции).
3.3. Ввод/вывод массивов
В языке C нет возможности вводить и выводить весь массив одним оператором ввода/вывода. Можно вводить и выводить только один элемент массива. Следовательно, для того чтобы ввести весь массив, надо использовать цикл.
Вывод также осуществляется в цикле.
В результате на экране мы увидим примерно следующий текст: a[1] = 4 a[2] = 15 a[3] = -2 .
3.4. Пример 1. Обработка одномерного массива
Даны три массива разной размерности. Определить в каком массиве больше сумма элементов. #include #include const int nmax = 100; int ArrayInput( int *n, double x[], char *fname); // Функция ввода массива из файла double Sum( double x[], int n); // Функция поиска суммы элементов массива void main( int argc, char *argv[]) < double a[nmax], b[nmax], c[nmax]; double sa, sb, sc, max; int na, nb, nc; setlocale(LC_ALL, "rus"); // Меняем кодировку для консольного приложения if (argc < 4) < printf("Недостаточно параметров!\n"); return ; >if (!ArrayInput(&na, a, argv[1])) return ; if (!ArrayInput(&nb, b, argv[2])) return ; if (!ArrayInput(&nc, c, argv[3])) return ; sa = Sum(a, na); sb = Sum(b, nb); sc = Sum(c, nc); max = sa; if (sb > max) max = sb; if (sc > max) max = sc; if (sa == max) printf(«Массив А имеет максимальную сумму элементов: %9.3lf\n», max); if (sb == max) printf(«Массив B имеет максимальную сумму элементов: %9.3lf\n», max); if (sc == max) printf(«Массив C имеет максимальную сумму элементов: %9.3lf\n», max); > double Sum( double x[], int n) < double s = 0; for ( int i = 0; i < n; i++) s += x[i]; return s; >int ArrayInput( int *n, double x[], char *fname) < FILE *file; if ((file = fopen(fname, "r")) == NULL) < printf("Невозможно открыть файл '%s'\n", fname); return 0; >if (fscanf(file, «%d», n) < 1) < printf ("Ошибка чтения из файла '%s'\n", fname); fclose(file); return 0; >if (*n < 0 || *n >nmax) < printf("Кол-во эл-тов массива должно быть от 1 до %d! (файл '%s')\n", nmax, fname); return 0; >for ( int i = 0; i < *n; i++) if (fscanf(file, "%lf", &x[i]) < 1) < printf ("Ошибка чтения из файла '%s'\n", fname); fclose(file); return 0; >fclose(file); return 1; >
3.5. Пример 2. Обработка двумерного массива
Для каждой строки матрицы проверить наличие нулевых элементов.
Первый способ
Второй способ
3.6. Пример 3. Суммирование элементов матрицы
Даны две матрицы разного размера. Функция Sum находит сумму элементов матрицы, не зависимо от того, что матрицы имеют разное количество столбцов. Обратите внимание, что функция будет выдавать корректный результат, только если используются все объявленные элементы матриц. #include #include double Sum( double *x, int m, int n); void main( int argc, char *argv[]) < const int na = 4, mb = 3, nb = 5; double a[na][na], b[mb][nb]; double sa, sb; FILE *file; setlocale(LC_ALL, "rus"); if (argc < 3) < printf("Недостаточно параметров!\n"); return ; >if ((file = fopen(argv[1], «r»)) == NULL) < printf("Невозможно открыть файл '%s'\n", argv[1]); return ; >for ( int i = 0; i < na; i++) for ( int j = 0; j < na; j++) if (fscanf(file, "%lf", &a[i][j]) < 1) < printf ("Ошибка чтения из файла '%s'\n", argv[1]); fclose(file); return ; >fclose(file); if ((file = fopen(argv[2], «r»)) == NULL) < printf("Невозможно открыть файл '%s'\n", argv[2]); return ; >for ( int i = 0; i < mb; i++) for ( int j = 0; j < nb; j++) if (fscanf(file, "%lf", &b[i][j]) < 1) < printf ("Ошибка чтения из файла '%s'\n", argv[2]); fclose(file); return ; >fclose(file); sa = Sum(a[0], na, na); // a[0] — указатель на первую строку матрицы // (и, соответственно, на начало всей матрицы). sb = Sum( reinterpret_cast < double *>(b), mb, nb); // Преобразование без проверки с помощью reinterpret_cast. // Просто b нельзя написать — это вызовет сообщение // о невозможности преобразовать матрицу в указатель. printf(«SumA = %6.2lf\nSumB = %6.2lf\n», sa, sb); > double Sum( double *x, int m, int n) < double s = 0; for ( int i = 0; i < m; i++) for ( int j = 0; j < n; j++) s += x[i * n + j]; return s; > Содержание