Назад Наверх
Язык Си

Язык программирования Си

ПРИМЕРНЫЕ ВОПРОСЫ ДЛЯ ЗАЩИТЫ ЛАБОРАТОРНЫХ НА СИ.   code.pdf     code.c

Протометодичка по Си по состоянию на 2008 год.

Вопросы студентов




Вопрос:

Как установить MinGW?

Ответ:

Ответ здесь. Учитесь работать с первоисточниками. Исходники обычно на английском языке. Полезная ссылка.

 


 

Вопрос:

Что такое терминал и чем он отличается от консоли?

Ответ:

Консоль и компьютерный терминал в компьютерной технике можно считать синонимами. Подробнее можно прочитать здесь.

 


 

Вопрос:

Как сравнить два элемента строчных массивов на соответствие?

Ответ:

#include <stdio.h> /* printf, scanf, NULL */
#include <string.h> /* strlen */

int main () {
  char mstring1[] = "Hello_";
  char mstring2[] = "Hell_o";

  int string_size; //Размер самой длинной строки
  if (strlen((char*)&mstring1[0]) > strlen((char*)&mstring2[0]))
    string_size = strlen((char*)&mstring2[0]);
  else
    string_size = strlen((char*)&mstring1[0]);
  int i = 0;
  for (i = 0; i < string_size; i++) {
    printf("%3d and %3d ", mstring1[i], mstring2[i]);
    if (mstring1[i] == mstring2[i]) //Сравнение слов посимвольно
      puts ("equal");
    else puts ("not equal");
  }
  return 0;
}

 


 

Вопрос:

Отличие терминов "очистить память" и "освободить память".

Ответ:

memset((void *)buffer, 0, sizeof (buffer)); //очистка памяти;
free (buffer); //Освобождение памяти выделенной под массив.
Очистить память - значит заполнить память нулями. Заполнять нулями можно память как к стеке, так и в области кучи.
Освободить память - значит передать память из области кучи выделенную операционной системой ранее, назад в операционную систему.

 


 

Вопрос:

Закрывается экран программы после её выполнения.

Ответ:

1.используйте Линукс.
2. Используйте
#include <stdlib.h>
и в коде
system ("PAUSE");
3. Используйте gets();

 


 

Вопрос:

Как объявить масссив massive[size]? Пример работы с динамическим массивом.

Ответ:

Код взят с сайта cplusplus.com
/* malloc example: random string generator*/
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand */

int main () {
  int i,n;
  char * buffer; //Буфер будет использоваться как массив

  printf ("Введите длинну строки? ");
  scanf ("%d", &i); //Определение кол-ва элементов динамического массива.

  buffer = (char*) malloc (i+1); //Выделение памяти под массив в области кучи
  memset((void *)buffer, 0, sizeof (buffer)); //очистка памяти;
  if (buffer==NULL) exit (1);

  for (n=0; n<i; n++)
    buffer[n]=rand()%26+'a';
  buffer[i]='\0'; //Присвоение значения как элементу массива

  printf ("Random string: %s\n",buffer);
  free (buffer); //Освобождение памяти выделенной под массив.

  return 0;
}

 


 

Вопрос:

Какие действия выполняет оператор puts? Куда возвращается значение? Какое значение возвращается?

Ответ:

Оператор puts выводит последовательность байт в стандартный поток вывода. Отличается от printf тем, что не форматирует передаваемые значения, т.е. не позволяет выводить численные переменные и константы. По умолчанию стандартным потоком вывода является консоль.
Остальное читайте в любом учебнике или на любом форуме.

 


Вопрос:

Где хранятся переменные?

Ответ:

В оперативной памяти. При запуске программы, операционная система выделяет память под исполняемые комманды и под локальные переменные. Оперативная память выделяемая под локальные переменные называется стек. Если создана локальная переменная, она создана на стеке. Если под переменную выделяется оперативная память, она выделяется в области кучи. Область кучи это общая оперативная память распределяемая операционной системой между всеми запущенными программами.
Если у Вас возник такой вопрос, настоятельно рекомендую перечитать учебник по Информатике.