Программирование на языке C в Microsoft Visual Studio 2010



Авторы специализируются на тестах по любым дисциплинам! Средний балл по тестам 4,6.
 
Любые вопросы по дистанционному обучению. Тесты, письменные работы, сессия под ключ.
 
Известный интернет сайт, помощь по любым учебным вопросам - от теста до дипломной работы. Личный менеджер.
 
Крупная биржа студенческих работ. Закажи напрямую у преподавателя. Низкие цены, стена заказов.
 

В каком случае сумма всех элементов массива будет подсчитана правильно?

  • #include <stdio.h>#define N 10int main(){ int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 1, sum = 0; i<=N; i++) sum += arr[i]; printf(«»Сумма элементов: %d\n»», sum); return 0; }
  • #include <stdio.h>#define N 10int main(){ int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N+1; i++) sum += arr[i]; printf(«»Сумма элементов: %d\n»», sum); return 0; }
  • (Правильный ответ)
    #include <stdio.h>#define N 10int main(){ int i, sum; int arr[N] = {3, 4, 5, 4, 4}; for (i = 0, sum = 0; i<N; i++) sum += arr[i]; printf(«»Сумма элементов: %d\n»», sum); return 0; }

В приведенной программе функция Copy выполняет копирование одной структуры типа sale в другую и возвращает структуру этого же типа:

typedef struct sale_struct { char *title; int price;} sale;sale Copy(sale);int main(void){ sale s1,s2; struct sale_struct s3, s4; s1.title = «»Book»»; s1.price = 200; s3.title = «»Cake»»; s3.price = 60; return 0;}sale Copy(sale s) { sale s1; s1 = s; return s1;}

Какие из перечисленных вызов функции Copy являются верными?

  • s4 = Copy(&s3);
  • (Правильный ответ) s2 = Copy(s1);
  • (Правильный ответ) s3 = Copy(s1);

Чем отличаются функции printf() и puts() при консольном выводе информации?

  • (Правильный ответ) функция printf() записывает данные в стандартный выходной поток в соответствии с заданной строкой форматирования
  • (Правильный ответ) функция puts() заменяет символ конца строки ‘\0’ на символ новой строки ‘\n’
  • функция printf() предназначена для вывода данных только в файл

Почему язык С относится к языку среднего уровня?

  • язык С менее совершенен по сравнению с традиционными языками высокого уровня
  • (Правильный ответ) язык С сочетает элементы языков высокого уровня с функциональностью ассемблера
  • язык С обладает недостаточной структурированностью

Каким образом пользователь должен ввести данные о себе, чтобы в результате выполнения приведенного фрагмента кода программа вывела приветствие Приятно познакомиться, Иван Иванов!?

char FirstName[100], LastName[100]; int Age; printf(«»Введите Ваши имя, фамилию и возраст: \n»»); scanf(«»%s %[^,]s %d»», FirstName, LastName, &Age); printf(«»Приятно познакомиться, %s %s!\n»», FirstName, LastName);

  • (Правильный ответ) Иван Иванов, 30
  • Иван, Иванов, 30
  • Иван Иванов 30

Каким будет значение переменной d после выполнения заданных операций и почему?

int a = 15, b = 2; float c = 1.0F; float d; d = c*(a/b);

  • (Правильный ответ) d = 7.0, так как при выполнении деления произойдет потеря точности
  • d = 7.5, так как d имеет тип с плавающей точкой
  • d = 7, так как в результате выполнения арифметического выражения будет выполнено преобразование к типу int

Размер (в байтах) объектов каких типов данных не зависит от разрядности процессора?

  • (Правильный ответ) char
  • unsigned int
  • int

Чему будет равен результат вычисления a + b, если переменные имеют заданные значения?

int a = SCHAR_MIN; int b = SCHAR_MAX;

  • (Правильный ответ) -1
  • 0
  • 1

Чему будет равен результат вычисления a + b, если переменные имеют заданные значения?

int a = INT_MIN; int b = INT_MAX;

  • 1
  • 0
  • (Правильный ответ) -1

Сколько раз будет выполнен цикл for?

int x; printf(«»Угадайте число:\n»»); for (x=0; x!=123; ) scanf(«»%d»», &x);

  • (Правильный ответ) заранее неизвестно
  • 0
  • 123

В результате выполнения какого фрагмента кода значение переменной y будет равно 10?

  • int x = 5, y; for(y=1; y<=x; ++y) { printf(«»%d «», y); y = x*2; }
  • int x = 5, y = 1; do { y = x+1; x++; } while (y<=10);
  • (Правильный ответ)
    int x = 5, y = 10; while (y<=x) { printf(«»%d «», y); y = x*3; }

В результате выполнения какого фрагмента кода на экран будет выведена таблица чисел от 1 до 9 и их квадратов?

  • (Правильный ответ)
    int x, n = 1; while (n<10) { x = n*n; printf(«»%d %d\n»», n, x); n++; }
  • int x, n; for (n=1; n<9; n++) { x = n*n; printf(«»%d %d\n»», n, x); }
  • int x, n = 1; while (n<=10) { x = n*n; printf(«»%d %d\n»», n, x); }

Что будет выводиться на экран во время выполнения приведенного фрагмента кода?

int x, n = 1; while (n<=10) { x = n*n; printf(«»%d %d\n»», n, x); }

  • (Правильный ответ) бесконечное число строк «1 1»
  • таблица чисел от 1 до 10 и их квадратов
  • 10 строк с квадратами чисел от 1 до 10

Игра «Угадай число» заканчивавается, если задуманное число угадано, или количество попыток достигло определенного значения, например, 10. Какой фрагмент кода реализует эту игру неверно, если c — число попыток, n — задуманное число?

  • int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while ((n!=m) && (c<10))
  • (Правильный ответ)
    int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while ((n!=m) && (c<=10))
  • (Правильный ответ)
    int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while ((n!=m) || (c<=10))

Какое утверждение является верным для приведенного фрагмента кода?

int x; printf(«»Угадайте число:\n»»); for (x=0; x!=123; ) scanf(«»%d»», &x);

  • цикл выполняется, пока пользователь не введет число 0
  • цикл выполняется 123 раза
  • при компиляции приведенного кода возникнет ошибка
  • (Правильный ответ) цикл выполняется, пока пользователь не введет число 123

Игра «Угадай число» заканчивавается, если задуманное число угадано, или количество попыток достигло определенного значения, например, 10. Какой фрагмент кода правильным образом реализует эту игру, если c — число попыток, n — задуманное число?

  • (Правильный ответ)
    int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while ((n!=m) && (c<10))
  • int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while ((n!=m) && (c<=10))
  • int c = 0, n = 100, m; do { printf(«»Ваш вариант: «»); scanf(«»%d»», &m); c++; } while (n!=m) || (c<=10))

В результате выполнения какого фрагмента кода на экран будут выведены числа от 0 до 10?

  • int t; for(t=0; t<100; t++) { if(t==10) printf(«»%d \n»», t); }
  • (Правильный ответ)
    int t; for(t=0; t<100; t++) { printf(«»%d \n»», t); if(t==10) break; }
  • (Правильный ответ)
    for(t=0; t<100; t++) { printf(«»%d \n»», t); if(t==10) t=100; }

В результате выполнения какого фрагмента кода значение переменной m будет равно 8?

  • int k = 0, m; goto lbl; {int a = 3, b = 4; k = a + b; lbl: m = k + 1; }
  • (Правильный ответ)
    int k = 0, m; int a = 3, b = 4; k = a + b; goto lbl; lbl: m = k + 1;
  • (Правильный ответ)
    int k = 0, m; goto lbl;lbl: {int a = 3, b = 4; k = a + b; m = k + 1; }

В каком случае на экран будут выведены только нечетные числа от 1 до 10?

  • (Правильный ответ)
    int n = 1; while (n<=10) { if (n%2) printf(«»%d\n»», n); n++; continue; printf(«»%d\n»», n); n++; }
  • int n = 1; while (n<=10) { if (n%2) printf(«»%d\n»», n); n++; printf(«»%d\n»», n); n++; }
  • int n = 1; while (n<=10) { if (!(n%2)) printf(«»%d\n»», n); n++; continue; printf(«»%d\n»», n); n++; }

Какой оператор используется для выхода из функции при выполнении некоторых условий?

  • continue
  • break
  • (Правильный ответ) return
  • goto

В результате выполнения какого фрагмента кода значение переменной t будет равно 10?

  • int t; for(t=0; t<100; t++) { printf(«»%d \n»», t); if(t==10) t=100; }
  • int t; for(t=0; t<100; t++) { if(t==10) printf(«»%d \n»», t); }
  • (Правильный ответ)
    int t; for(t=0; t<100; t++) { printf(«»%d \n»», t); if(t==10) break; }

Какой фрагмент кода полностью аналогичен заданному?

int x = 10, y; if(x>9) y = 100; else y = 200;

  • int x = 10, y; y = x<9 ? 100 : 200;
  • (Правильный ответ)
    int x = 10, y; y = x>9 ? 100 : 200;
  • int x = 10, y; y = x<9 ? 200 : 100;

При выполнении какого варианта программы определения дня недели при вводе числа 8 на экране будет выведено сообщение Ошибка! Вы ввели неверное число?

  • int x; printf(«»Введите число от 1 до 7: «»); scanf_s(«»%d»», &x); switch (x<=5 ? 1 : x==6 ? 2 : 3) { case 1: printf(«»Сегодня рабочий день»»); break; case 2: printf(«»Сегодня суббота»»); break; case 3: printf(«»Сегодня воскресенье»»); break; default: printf(«»Ошибка! Вы ввели неверное число»»); break; }
  • int x; printf(«»Введите число от 1 до 7: «»); scanf_s(«»%d»», &x); switch (x<=5 ? 1 : x==6 ? 2 : x==7 ? 3 : 4) { case 1: printf(«»Сегодня рабочий день»»); break; case 2: printf(«»Сегодня суббота»»); break; case 3: printf(«»Сегодня воскресенье»»); break; case 4: printf(«»Ошибка! Вы ввели неверное число»»); break; }
  • (Правильный ответ)
    int x; printf(«»Введите число от 1 до 7: «»); scanf_s(«»%d»», &x); switch (x>=5 ? 1 : x==6 ? 2 : x==7 ? 3 : 4) { case 1: printf(«»Сегодня рабочий день»»); break; case 2: printf(«»Сегодня суббота»»); break; case 3: printf(«»Сегодня воскресенье»»); break; default: printf(«»Ошибка! Вы ввели неверное число»»); break; }

В результате выполнения какого фрагмента кода на экран будет выведено больше одного числа?

  • (Правильный ответ)
    int n = 1; while (n<=10) { if (n%2) printf(«»%d\n»», n); n++; continue; printf(«»%d\n»», n); n++; }
  • int n = 1; while (n<=10) { if (n%2) printf(«»%d\n»», n); n++; return; printf(«»%d\n»», n); n++; }
  • int n = 1; while (n<=10) { if (n%2) printf(«»%d\n»», n); n++; break; printf(«»%d\n»», n); n++; }

В какой программе будет корректно обработана ситуация деления на нуль?

  • (Правильный ответ)
    int a, b, res; char op; int f = 1; printf(«»Введите 1й операнд: «»); scanf(«»%d»», &a); printf(«»Введите знак операции: «»); scanf(«»%s»», &op); printf(«»Введите 2й операнд: «»); scanf(«»%d»», &b); switch (op) { case ‘+’: res = a+b; break; case ‘-‘: res = a-b; break; case ‘*’: res = a*b; break; case ‘/’: switch (b) { case 0: printf(«»Деление на 0!\n»»); break; default: res = a/b; } break; default: printf(«»Неизвестная операция 111″»); f = 0; } if (f) printf («»Результат: %d 222″», res);
  • int a, b, res; char op; int f = 1; printf(«»Введите 1й операнд: «»); scanf(«»%d»», &a); printf(«»Введите знак операции: «»); scanf(«»%s»», &op); printf(«»Введите 2й операнд: «»); scanf(«»%d»», &b); switch (op) { case ‘+’: res = a+b; break; case ‘-‘: res = a-b; break; case ‘*’: res = a*b; break; case ‘/’: res = a/b; break; default: printf(«»Неизвестная операция»»); f = 0; } if (f) printf («»Результат: %d»», res);
  • int a, b, res; char op; int f = 1; printf(«»Введите 1й операнд: «»); scanf(«»%d»», &a); printf(«»Введите знак операции: «»); scanf(«»%s»», &op); printf(«»Введите 2й операнд: «»); scanf(«»%d»», &b); switch (op) { case ‘+’: res = a+b; break; case ‘-‘: res = a-b; break; case ‘*’: res = a*b; break; case ‘/’: switch (b) { case 0: printf(«»Деление на 0!\n»»); default: res = a/b; } break; default: printf(«»Неизвестная операция 111″»); f = 0; } if (f) printf («»Результат: %d 222″», res);

Задан цикл, который выводит все числа от 1 до 10:

int n = 1; (1) while (n<=10) (2) { if (n%2) (3) printf(«»%d\n»», n); (4) n++; (5) printf(«»%d\n»», n); (6) n++; (7) }

Как изменить приведенный цикл, чтобы на экран выводились только нечетные числа от 1 до 10?

  • в строке (5) удалить приращение переменной n
  • изменить условие в строке (3) на (!(n%2))
  • (Правильный ответ) после строки (5) добавить оператор continue

При выполнении какой программы возникнет ошибка, связанная с выходом за границы массива?

  • #include <stdio.h>#define N 11int main(){ int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=1; i<N; i++) printf(«»%d,%d\n»», arr[i][0], arr[i][1]); return 0; }
  • (Правильный ответ)
    #include <stdio.h>#define N 11int main(){ int i; int arr[N][2]; for (i=1; i<N; i++) { arr[i][1] = i; arr[i][2] = i*i; } for (i=0; i<N; i++) printf(«»%d,%d\n»», arr[i][1], arr[i][2]); return 0; }
  • #include <stdio.h>#define N 11int main(){ int i; int arr[N][2]; for (i=0; i<N; i++) { arr[i][0] = i; arr[i][1] = i*i; } for (i=0; i<N; i++) printf(«»%d,%d\n»», arr[i][0], arr[i][1]); return 0; }

Какие утверждения являются верными?

  • (Правильный ответ) элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса
  • элементы массива располагаются в памяти случайным образом, занимая свободные участки памяти
  • (Правильный ответ) ячейка памяти с наименьшим адресом относится к первому элементу массива, а с наибольшим – к последнему

Какое утверждение будет истинным после выполнения приведенного фрагмента кода?

int size1, size2, size3; int arr[5][2] = {0,1,2,3,4,5,6,7,8,9}; size1 = sizeof(arr)/sizeof(arr[0][0]); size2 = sizeof(arr)/sizeof(arr[0]); size3 = sizeof(arr);

  • size2 > size3
  • (Правильный ответ) size1 < size3
  • size3 > size2 > size1

В каком случае структура верно определена с использованием ключевого слова typedef?

  • struct foot_klub { char name[20]; int liga; float ochki;};typedef struct foot_klub *f_club;f_club a, *p, b[5];
  • (Правильный ответ)
    struct foot_klub { char name[20]; int liga; float ochki;};typedef struct foot_klub f_club;f_club a, *p, b[5];
  • (Правильный ответ)
    typedef struct { char name[20]; int liga; float ochki;}f_club;f_club a, *p, b[5];

Что такое объединение (union) в контексте языка С?

  • совокупность нескольких переменных, часто различных типов
  • (Правильный ответ) тип, который позволяет хранить различные типы данных в одном и том же пространстве памяти (но не одновременно)
  • тип данных, заданных списком принадлежащих ему значений

По какой формуле вычисляется общий размер двумерного массива в байтах?

  • всего байт = размер типа в байтах * количество элементов
  • (Правильный ответ) всего байт = число строк * число столбцов * размер типа в байтах
  • всего байт = размер1* размер2*…* размерN *размер типа в байтах

Каким образом хранится в памяти массив a, начинающийся по адресу 1000 и объявленный как int a[7]?

  • (Правильный ответ)

Приведенный фрагмент кода должен запрашивать пароль не более трех раз:

char s[5], psw[] = «»password»»; int i, k= 0; for (i=0; !k && i<3; i++) { printf(«»Введите пароль: \n»»), gets(s); if (strcmp(s, psw)) k = 1; } if (k) printf(«»Добро пожаловать! TRUE»»); else printf(«»Ошибка: Неверный пароль! FALSE»»);

Проверьте правильность этого кода для выполнения поставленной задачи и определите, сколько раз будет выполнен цикл for, если пользователь сразу введет верный пароль password?

  • (Правильный ответ) 3
  • 1
  • 0

Строка инициализирована следующим образом: char str1[10] = «Course». Какое утверждение является верным?

  • под строку выделяется 7 байт
  • (Правильный ответ) под строку выделяется 10 байт
  • под строку выделяется 6 байт

Необходимо написать программу, которая будет определять, является ли заданная строка палиндромом (палиндром — это слово, которое читается одинаково слева направо и справа налево). Решение данной задачи основывается на просмотре строки одновременно слева направо и справа налево и сравнении соответствующих символов. Если в какой-то момент символы не совпадают, делается вывод о том, что строка не является палиндромом, если же удается достичь середины строки и при этом все соответствующие символы совпали, то строка является палиндромом. Какая программа выполняет поставленную задачу?

  • char s[100];int pal(char s[100]);int main(){ printf(«»\nВведите строку: «»); gets(s); if (pal(s)) printf(«»Строка является палиндромом»»); else printf(«»Строка не является палиндромом»»); return 0;}int pal(char s[100]){ int l; char s1[100]; l=s[0]==s[strlen(s)-1]; strncpy(s1, s+1, strlen(s)-2); s1[strlen(s)-2]=’\0′; return l&&pal(s1);}
  • char s[100];int pal(char s[100]);int main(){ printf(«»\nВведите строку: «»); gets(s); if (pal(s)) printf(«»Строка является палиндромом»»); else printf(«»Строка не является палиндромом»»); return 0;}int pal(char s[100]){ int l; char s1[100]; if (strlen(s)<1) return 1; else { l=s[0]==s[strlen(s)-1]; strncpy(s1, s+1, strlen(s)-2); s1[strlen(s)-2]=’\0′; return l&&pal(s1); }}
  • (Правильный ответ)
    char s[100];int pal(char s[100]);int main(){ printf(«»\nВведите строку: «»); gets(s); if (pal(s)) printf(«»Строка является палиндромом»»); else printf(«»Строка не является палиндромом»»); return 0;}int pal(char s[100]){ int l; char s1[100]; if (strlen(s)»»=1) return 1; else { l=s[0]==s[strlen(s)-1]; strncpy(s1, s+1, strlen(s)-2); s1[strlen(s)-2]=’\0′; return l&&pal(s1); }}

Какая программа реализует сортировку массива целых чисел по возрастанию методом «пузырька» (методом прямого обмена)?

  • #include <stdio.h>#define N 7int main(){ int i, j, k, buf; char arr[N] = «»Lection»»; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] < arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf(«»%d «», arr[k]); return 0; }
  • (Правильный ответ)
    #include <stdio.h>#define N 7int main(){ int i, j, k, buf; char arr[N] = «»Lection»»; for (i=0; i<N; i++) for (j=0; j<N-1; j++) { if (arr[j] > arr[j+1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } }; for (k=0; k<N; k++) printf(«»%d «», arr[k]); return 0; }
  • #include <stdio.h>#define N 7int main(){ int i, j, k, buf, min; char arr[N] = «»Lection»»; for (i=0; i<N-1; i++) { min = i; for (j=i+1; j<N; j++) { if (arr[j]<arr[min]) min = j; buf = arr[i]; arr[i] = arr[min]; arr[min] = buf; } } for (k=0; k<N; k++) printf(«»%c «», arr[k]); return 0; }

Каким будет результат выполнения приведенной программы?

#include <stdio.h>#include <string.h>#define N 10int main(){ char strLow[N]; int i; printf(«»Enter string in low register (%d symbols): \n»», N); scanf(«»%s»», strLow); for (i=0; i<strlen(strLow); i++) putchar(strLow[i] — 32); printf(«»\n»»); return 0;}

  • при выполнении приведенной программы возникнет ошибка выполнения
  • все символы строки strLow будут преобразованы в верхний регистр
  • (Правильный ответ) на экран будет выведена строка strLow в верхнем регистре

Программа запускается с одним аргументом командной строки. Аргументом является строка. Каким образом необходимо задать аргументы командной строки для корректной его обработки при работе программы?

  • (Правильный ответ)
  • (Правильный ответ)

С каким количеством аргументов командной строки запускается программа (считается, что аргумент в заданном виде обрабатывается корректно?

  • (Правильный ответ) 3
  • 1
  • 2

При каких значениях переменной error в результате выполнения приведенной программы на экран будет выведено сообщение Возникла ошибка преобразования (ERR_CONVERT)?

int main(void){ typedef enum { ERR_READ, ERR_WRITE, ERR_CONVERT} Err; Err error; switch (error) { case ERR_READ: printf(«»Возникла ошибка чтения (ERR_READ)\n»»); break; case ERR_WRITE: printf(«»Возникла ошибка записи (ERR_WRITE)\n»»); break; case ERR_CONVERT: printf(«»Возникла ошибка преобразования (ERR_CONVERT)\n»»); break; default: printf(«»Возникла неизвестная ошибка\n»»); break; }; return 0;}

  • (Правильный ответ) error = 2;
  • (Правильный ответ) error = ERR_CONVERT;
  • error = 1;

Что делает приведенная программа?

#include <stdio.h>#include <conio.h>int main(){ int n=0, i=0; char ch, str[30]=»»»»; printf(«»Введите строку: «»); scanf(«»%s»», str); printf(«»Введите символ: «»); ch = _getche(); while(str[i]!=’\0′) { if(str[i]==ch) n++; i++; } return 0; }

  • определяет количество вхождений каждого символа в строку
  • определяет количество символов в строке
  • (Правильный ответ) определяет количество вхождений заданного символа в строку

Заданы две строки:

char str1[10] = «»Lection»»; char str2[10] = «»lection»»;

Какое утверждение является верным и почему?

  • (Правильный ответ) strcmp(str1, str2) < 0, так как код символа L меньше кода символа l
  • strcmp(str1, str2) > 0, так как код символа L больше кода символа l
  • strcmp(str1, str2) = 0, так как длины строк одинаковы

При выводе какой строки возникнут проблемы и почему?

char str1[10] = «»Course»»; char str2[] = «»Lection»»; char str3[7] = «»Example»»;

  • str1, потому что для хранения массива символов выделено больше элементов, чем заполнено при инициализации
  • (Правильный ответ) str3, потому что заданная размерность массива не предусмативает место для хранения нулевого символа
  • str2, потому что при инициализации не указана размерность массива

В результате выполнения какого фграгмента программного кода значение переменной n будет больше 7?

  • (Правильный ответ)
    int n=0, num=10; char str1[10]=»»»», str2[10]=»»Lection»»; _itoa(num, str1, 10); strcat(str2, str1); n = strlen(str2);
  • int n = 0; char str2[10] = «»Lection»»; n = strlen(str2);
  • int n = 0; char str2[10] = «»Lection\0″»; n = strlen(str2);

В приведенной программе функция Copy выполняет копирование одной структуры типа sale в другую и возвращает структуру этого же типа:

typedef struct sale_struct { char *title; int price;} sale;sale Copy(sale);int main(void){ sale s1,s2; struct sale_struct s3, s4; s1.title = «»Book»»; s1.price = 200; s3.title = «»Cake»»; s3.price = 60; return 0;}sale Copy(sale s) { sale s1; s1 = s; return s1;}

Какие из перечисленных вызов функции Copy являются верными?

  • (Правильный ответ) s4 = Copy(s3);
  • (Правильный ответ) s1 = Copy(s3);
  • (Правильный ответ) s2 = Copy(s1);

Какое выражение нужно вставить в обозначенное место приведенного кода для того, чтобы значение переменной z было равно 10?

int x = 10, y = 20, z; int *p1, *p2; p1 = &x; p2 = p1; <Выражение> z = (x==y) ? (x+y) : (y-x);

  • *p2 = y;
  • x = y;
  • (Правильный ответ) p1 = &y;

Какие утверждения будут верными после выполнения приведенного фрагмента кода?

int x = 99; int *p1, *p2; p1 = &x; p2 = p1;

  • p2 разыменовывает указатель p1
  • (Правильный ответ) оба указателя (p1 и р2) ссылаются на х
  • указатель p2 содержит адрес указателя p1

Требуется написать программу, которая будет копировать одну строку в другую с помощью указателей. Определите, выполняет ли приведенная программа поставленную задачу? Если не выполняет, объясните, почему?

#include <stdio.h>#include <conio.h>int main(){ char str1[10] = «»»», str2[10] = «»»»; char *ptr1, *ptr2; printf(«»Введите строку: %s»», str1); scanf(«»%s»», str1); ptr1 = str1; ptr2 = str2; while (*ptr1!=’\0′) { if (*ptr1==’\0′) { *ptr2 = ‘\0’; break; } *ptr2 = *ptr1; ptr1++; } printf(«»str2 = %s\n»», str2); return 0; }

  • (Правильный ответ) программа не выполняет поставленную задачу, так как в цикле не происходит изменение указателя ptr2
  • программа не выполяет поставленную задачу, так как неверно задано условие цикла
  • программа выполняет поставленную задачу

В программе объявлен указатель void *p. Какие утверждения являются неверными?

  • (Правильный ответ) указатель p может содержать адрес только объекта типа void
  • к указателю p неприменима операция разыменования
  • (Правильный ответ) указатель p может быть автоматически преобразован к любому типу

Требуется написать программу, которая копирует введенную пользователем строку str1 в строку str2 в обратном порядке. Например, если пользователь ввел строку string, то str2 в результате выполнения данной программы должна быть равна gnirts. Какая программа выполняет поставленную задачу?

  • #include <stdio.h>#include <conio.h>int main(){ char str1[10] = «»»», str2[10] = «»»»; char *ptr1, *ptr2; printf(«»Введите строку: %s»», str1); scanf(«»%s»», str1); ptr1 = str1 + strlen(str1) — 1; ptr2 = str2; while (*ptr1) { if (!(*ptr1)) *ptr2 = ‘\0’; *ptr2 = *ptr1; ptr1—; ptr2++; } printf(«»str2 = %s\n»», str2); return 0; }
  • #include <stdio.h>#include <conio.h>int main(){ char str1[10] = «»»», str2[10] = «»»»; char *ptr1, *ptr2; printf(«»Введите строку: %s»», str1); scanf(«»%s»», str1); ptr1 = str1 + strlen(str1); ptr2 = str2; while (ptr1>=str1) { if (ptr1<str1) *ptr2 = ‘\0’; *ptr2 = *ptr1; ptr1—; ptr2++; } printf(«»str2 = %s\n»», str2); return 0; }
  • (Правильный ответ)
    #include <stdio.h>#include <conio.h>int main(){ char str1[10] = «»»», str2[10] = «»»»; char *ptr1, *ptr2; printf(«»Введите строку: %s»», str1); scanf(«»%s»», str1); ptr1 = str1 + strlen(str1) — 1; ptr2 = str2; while (ptr1>=str1) { if (ptr1<str1) *ptr2 = ‘\0’; *ptr2 = *ptr1; ptr1—; ptr2++; } printf(«»str2 = %s\n»», str2); return 0; }

Приведенная программа должна определять, является ли заданная строка палиндромом (палиндром — это слово, которое читается одинаково слева направо и справа налево). В программе выполняется просмотр строки одновременно слева направо и справа налево и сравнение соответствующих символов. Если в какой-то момент символы не совпадают, делается вывод о том, что строка не является палиндромом, если же удается достичь середины строки и при этом все соответствующие символы совпали, то строка является палиндромом:

char s[100];int pal(char s[100]);int main(){ printf(«»\nВведите строку: «»); gets(s); if (pal(s)) printf(«»Строка является палиндромом»»); else printf(«»Строка не является палиндромом»»); return 0;}int pal(char s[100]){ int l; char s1[100]; if (strlen(s)<1) return 1; else { l=s[0]==s[strlen(s)-1]; s