Урок 22. Проверочная работа

Особенности языка С. Учебное пособие

Выполнение всех задания данного урока предполагает период времени выполнения более чем 1,5 часа. Поэтому если есть ограничения по времени, то оценка работы может выполняться по количеству набранных баллов. Приблизительные баллы указаны в скобках после каждого задания.

  1. Напишите программу, предназначенную для наглядной демонстрации различий между такими типами данных как char, short, int, unsigned. (7)
  2. Значение какого из ниже представленных массивов совпадает со строкой "Zeitgeist"? Почему? (1)
    arrA[9] = {'Z', 'e', 'i', 't', 'g', 'e', 'i', 's', 't'};
    arrB[] = {'Z', 'e', 'i', 't', 'g', 'e', 'i', 's', 't', '\0'};
  3. Если массив arr содержит строку, то будут ли различаться значения, которые вернут функции sizeof() и strlen()? (2)
  4. Напишите код, в котором одной переменной присваивается введенное пользователем число, а второй переменной модуль этого числа. После этого значение второй переменной выводится на экран. Используйте условное выражение, а не инструкцию if. (4)
  5. Переделайте условное выражение из 4-го задания в макрос. (2)
  6. Объявлены и определены целочисленные переменные: a = 10, b = 0, c = -3. Определите их значения после выполнения следующих двух выражений, а также значения самих выражений: (2)
    a-- + ++b; --c + b--;
  7. Запрограммируйте вывод на экран символов так, как показано на рисунке. Используйте циклы for, а также если необходимо функцию strcat(). (12)
    Таблица умножения из символов
  8. Напишите программу, которая определяет в процентном соотношении количество гласных и согласных букв в текстовом файле. Имя файла передается в программу через командную строку. (10)
  9. Может ли одна ячейка памяти иметь несколько имен переменных? Может ли адрес определенной ячейки памяти содержаться во множестве переменных? Ответ поясните. (4)
  10. Как изменить приведенную ниже программу так, чтобы среди параметров функции sum() не было указателя, а функция возвращала значение, оставляя тем самым возможность изменить значение любой внешней переменной? (3)
    #include <stdio.h>
     
    void sum (float *base, float add);
     
    main() {
    	float a=100, b;
     
    	scanf("%f", &b);
    	sum(&a, b);
    	printf("%.4f\n", a);
    }
     
    void sum (float *base, float add) {
    	*base = *base + add/2;
    }
  11. Напишите программу, в которой массив заполняется случайными буквами английского алфавита; значения элементов массива в символьном представлении выводятся на экран. (4)
  12. Напишите функцию, которая принимает указатели на два массива. Функция должна заполнять один массив 25-ю случайными четными числами, а другой — 25 нечетными. Продемонстрируйте ее работу. (6)
  13. Пользователь вводит две строки, каждая строка состоит из двух слов, разделенных пробелом. Требуется сравнить строки лексикографически, начиная со второго слова (т.е. после пробела). Напишите программу, выполняющую описанную задачу. (6)
  14. Пользователь вводит адреса сайтов и их ТИЦ. Данные о каждом сайте сохраняются в элементе динамической структуры. По команде пользователя данные записываются в файл, при этом память, выделенная под динамическую структуру, высвобождается. Далее пользователь может снова начать вводить информацию о сайтах, либо завершить выполнение программы. (25)