Контрольные вопросы лабораторной работы No 1

© М.Л. Цымблер (mzym@susu.ru), Е.В. Аксенова (evaksen@mail.ru)


  1. Как выглядит минимальная программа на языке Си, которая компилируется и выполняется? Где находится точка входа в Си-программу?
  2. Перечислите типы данных языка Си. Для чего используются ключевые слова signed и unsigned? Для чего используется функция sizeof?
  3. Что выведет на экран следующая программа? Почему? Как получить правильный результат?
    #include <stdio.h>
    void main()
    {
      double x = 5 / 2;
    
      printf("%g\n", x);
      return;
    }
  4. Что выведет на экран следующая программа?
    #include <stdio.h>
    void main()
    {
      int a = 4, b = 3, c;
    
      c = a-- + b;
      printf("%d, %d, %d\n", a, b, c);
      c = --a + b;
      printf("%d, %d, %d\n", a, b, c);
      return;
    }
  5. Что выведет на экран следующая программа? Объясните результат.
    #include <stdio.h>
    void main()
    {
      int a = 5, b = -5;
    
      while (a-- > 0 || b++ > 0)
      printf("%d %d\n", a, b);
      return;
    }
  6. Напишите макроопределение ABS(x) (ABS - модуль числа). Воспользуйтесь условной операцией ?:
  7. Как с помощью функций scanf и printf считать и вывести:
  8. Что печатает программа и почему?
    /* пример Bjarne Stroustrup-а */
    #include <stdio.h>
    
    int a = 1;
    
    void f()
    {
      int b = 1;
      static int c = 1;
    
      printf("a=%d b=%d c=%d\n", a++, b++, c++);
      return;
    }
    
    void main()
    {
      while (a < 4)
      f();
      return;
    }
    
  9. Найдите ошибки в следующей программе. Объясните причины возникновения ошибок.
    #include <stdio.h>
    
    double x = 1.17;
    double y = x * 2.0;
    
    void main()
    {
      double z = x + 1.9;
      // ...
      return;
    }
    
  10. Что такое прототип функции? Для чего он используется?