Топ 100 въпроси и отговори за интервю за програмиране на C (PDF)
Ето въпроси и отговори за интервю за програмиране на C за по-свежи, както и за опитни кандидати, за да получат мечтаната работа.
Въпроси и отговори за интервю за основно програмиране на C за първокурсници
1) Как се конструира оператор за увеличение или израз за намаляване в C?
Всъщност има два начина, по които можете да направите това. Единият е да използвате оператора за нарастване ++ и оператора за намаляване –. Например изразът „x++“ означава да се увеличи стойността на x с 1. По същия начин изразът „x –“ означава да се намали стойността на x с 1. Друг начин за писане на изрази за увеличение е да се използва конвенционалния знак + плюс или – знак минус. В случай на "x++", друг начин да го напишете е "x = x +1".
👉 Безплатно изтегляне на PDF: C Въпроси и отговори за интервю за програмиране >>
2) Каква е разликата между повикване по стойност и повикване по препратка?
Когато използвате Call by Value, вие изпращате стойността на променлива като параметър към функция, докато Call by Reference изпраща адреса на променливата. Освен това при Извикване по стойност стойността в параметъра не се влияе от каквато и операция да се извършва, докато в случай на Извикване по препратка стойностите могат да бъдат повлияни от процеса във функцията.
3) Някои програмисти отстраняват грешки в своите програми, като поставят символи за коментар върху някои кодове, вместо да ги изтриват. Как това помага при отстраняване на грешки?
Поставянето на символи за коментар /* */ около код, наричано още „коментиране“, е начин за изолиране на някои кодове, които смятате, че може би причиняват грешки в програмата, без да изтривате кода. Идеята е, че ако кодът наистина е правилен, просто премахвате символите за коментари и продължавате нататък. Освен това ви спестява време и усилия, за да въвеждате отново кодовете, ако сте го изтрили на първо място.
4) Какъв е еквивалентният код на следния оператор във формат WHILE LOOP?
for (a=1; a<=100; a++)
printf ("%d\n", a * a);
Отговор:
a=1;
while (a<=100) {
printf ("%d\n", a * a);
a++;
}
5) Какво е стек?
Стекът е една форма на структура от данни. Данните се съхраняват в стекове, като се използва подходът FILO (First In Last Out). Във всеки конкретен случай само горната част на стека е достъпна, което означава, че за да се извлекат данни, които се съхраняват вътре в стека, първо трябва да се извлекат тези в горната част. Съхраняването на данни в стек също се нарича PUSH, докато извличането на данни се нарича POP.
6) Какво е файл с последователен достъп?
Когато пишете програми, които ще съхраняват и извличат данни във файл, е възможно да обозначите този файл в различни форми. Файлът с последователен достъп е такъв, че данните се записват в последователен ред: едни данни се поставят във файла след други. За достъп до конкретни данни във файла с последователен достъп, данните трябва да се четат една по една, докато се достигне правилната.
7) Какво е инициализация на променлива и защо е важна?
Това се отнася до процеса, при който на променлива се присвоява първоначална стойност, преди да бъде използвана в програмата. Без инициализация променливата би имала неизвестна стойност, което може да доведе до непредвидими резултати, когато се използва в изчисления или други операции.
8 Какво е спагети програмиране?
Спагети програмирането се отнася до кодове, които са склонни да се заплитат и припокриват в цялата програма. Този неструктуриран подход към кодирането обикновено се дължи на липсата на опит от страна на програмиста. Spaghetti програмирането прави програмата сложна и анализирането на кодовете трудно и затова трябва да се избягва, доколкото е възможно.
9) Разграничете изходните кодове от обектните кодове
Изходните кодове са кодове, които са написани от програмиста. Той се състои от команди и други подобни на английски ключови думи, които трябва да инструктират компютъра какво да прави. Компютрите обаче не биха могли да разберат изходните кодове. Следователно изходните кодове се компилират с помощта на компилатор. Получените резултати са обектни кодове, които са във формат, който може да бъде разбран от компютърния процесор. в C програмиране, изходните кодове се записват с файловото разширение .C, докато обектните кодове се записват с файловото разширение .OBJ
10) В програмирането на C, как се вмъкват символи в кавички (' и “) в изходния екран?
Това е често срещан проблем за начинаещи, тъй като кавичките обикновено са част от оператор printf. За да вмъкнете символа за кавички като част от изхода, използвайте спецификаторите на формат \' (за единични кавички) и \” (за двойни кавички).
11) Каква е употребата на знака '\0'?
Той се нарича завършващ нулев знак и се използва предимно за показване на края на низова стойност.
12) Каква е разликата между символа = и символа ==?
Символът = често се използва в математически операции. Използва се за присвояване на стойност на дадена променлива. От друга страна, символът ==, известен също като „равен на“ или „еквивалентен на“, е релационен оператор, който се използва за сравняване на две стойности.
13) Какво представлява операторът на модула?
Операторът на модула извежда остатъка от деление. Той използва символа за процент (%). Например: 10 % 3 = 1, което означава, че когато разделите 10 на 3, остатъкът е 1.
14) Какво е вложен цикъл?
Вложеният цикъл е цикъл, който се изпълнява в друг цикъл. Казано в друг смисъл, имате вътрешен цикъл, който е вътре във външен цикъл. В този сценарий вътрешният цикъл се изпълнява няколко пъти, както е посочено от външния цикъл. За всяко завъртане на външния цикъл първо се изпълнява вътрешният цикъл.
15) Кой от следните оператори е неправилен и защо? (>=, <=, <>, ==)
<> е неправилно. Докато този оператор се тълкува правилно като „не е равен на“ при писане на условни изрази, той не е правилният оператор, който да се използва в C програмиране. Вместо това операторът != трябва да се използва за указване на условието „не е равно на“.
16) Сравнете и сравнете компилаторите с интерпретаторите.
Компилаторите и интерпретаторите често се занимават с това как се изпълняват програмните кодове. Интерпретаторите изпълняват програмни кодове ред по ред, докато компилаторите приемат програмата като цяло и я преобразуват в обектен код, преди да я изпълнят. Ключовата разлика тук е, че в случай на интерпретатори, програмата може да срещне синтактични грешки по средата на изпълнението и ще спре от там. От друга страна, компилаторите проверяват синтаксиса на цялата програма и ще пристъпят към изпълнение само когато не бъдат открити синтактични грешки.
17) Как се декларира променлива, която ще съдържа низови стойности?
Ключовата дума char може да съдържа само 1 символна стойност наведнъж. Като създадете масив от знаци, можете да съхранявате низови стойности в него. Пример: „char MyName[50]; ” декларира низова променлива с име MyName, която може да съдържа максимум 50 знака.
18) Могат ли фигурните скоби {} да се използват за ограждане на един ред код?
Въпреки че фигурните скоби се използват главно за групиране на няколко реда кодове, те все пак ще работят без грешка, ако сте ги използвали за един ред. Някои програмисти предпочитат този метод като начин за организиране на кодове, за да изглеждат по-ясни, особено в условни изрази.
19) Какво представляват заглавните файлове и какви са техните приложения в C програмирането?
Заглавните файлове са известни също като библиотечни файлове. Те съдържат две основни неща: дефинициите и прототипите на функциите, използвани в програмата. Просто казано, командите, които използвате в програмирането на C, всъщност са функции, които се дефинират от всеки заглавен файл. Всеки заглавен файл съдържа набор от функции. Например: stdio.h е заглавен файл, който съдържа дефиниция и прототипи на команди като printf и scanf.
20) Какво е синтактична грешка?
Синтаксичните грешки са свързани с грешки в използването на език за програмиране. Това може да е грешно изписана команда или команда, която трябва да е въведена в режим с малки букви, но вместо това е въведена с главни букви. Неправилно поставен символ или липса на символ някъде в ред от код също може да доведе до синтактична грешка.
21) Какво представляват променливите и по какъв начин се различават от константите?
Променливите и константите може на пръв поглед да изглеждат подобни в смисъл, че и двете са идентификатори, съставени от един знак или повече знака (букви, цифри и няколко допустими символа). И двете ще имат определена стойност. Стойностите, държани от променлива, могат да се променят в цялата програма и могат да се използват в повечето операции и изчисления. На константите се дават стойности само в даден момент, поставени в началото на програмата. Тази стойност не се променя в програмата. Например, можете да присвоите константа с име PI и да й дадете стойност 3.1415. След това можете да го използвате като PI в програмата, вместо да се налага да пишете 3.1415 всеки път, когато имате нужда от него.
22) Как осъществявате достъп до стойностите в масив?
Масивите съдържат редица елементи в зависимост от размера, който сте му дали по време на декларацията на променливата. На всеки елемент се присвоява номер от 0 до брой елементи-1. За да присвоите или извлечете стойността на определен елемент, вижте номера на елемента. Например: ако имате декларация, която казва „intscores[5];“, тогава имате 5 достъпни елемента, а именно: scores[0], scores[1], scores[2], scores[3] и scores[4 ].
23) Мога ли да използвам тип данни „int“, за да съхраня стойността 32768? защо
Не. Типът данни „int“ може да съхранява стойности от -32768 до 32767. За да съхранявате 32768, можете да използвате вместо това „long int“. Можете също да използвате „unsigned int“, ако приемете, че не възнамерявате да съхранявате отрицателни стойности.
24) Могат ли два или повече оператора като \n и \t да се комбинират в един ред програмен код?
Да, напълно уместно е да комбинирате оператори, особено ако възникне нужда.
Например: можете да имате код като printf (“Hello\n\n\’World\'”) за извеждане на текста „Hello“ на първия ред и „World“, ограден в единични кавички, за да се появи на следващите два реда.
25) Защо не всички заглавни файлове са декларирани във всяка C програма?
Изборът за деклариране на заглавен файл в горната част на всяка C програма ще зависи от това какви команди/функции ще използвате в тази програма. Тъй като всеки заглавен файл съдържа различни дефиниции на функции и прототип, ще използвате само тези заглавни файлове, които ще съдържат функциите, от които се нуждаете. Декларирането на всички заглавни файлове във всяка програма само би увеличило общия размер на файла и натоварването на програмата и не се счита за добър стил на програмиране.
26) Кога се използва ключовата дума „void“ във функция?
Когато декларирате функции, вие ще решите дали тази функция ще връща стойност или не. Ако тази функция няма да върне стойност, като например когато целта на функция е да покаже някои изходи на екрана, тогава „void“ трябва да се постави в най-лявата част на заглавката на функцията. Когато се очаква върната стойност след изпълнение на функцията, типът данни на върнатата стойност се поставя вместо „void“.
27) Какво представляват съставните изрази?
Съставните изрази са съставени от два или повече програмни оператора, които се изпълняват заедно. Това обикновено се случва при обработка на условия, при които се изпълняват поредица от изрази, когато се оценява TRUE или FALSE. Съставните изрази могат също да се изпълняват в рамките на цикъл. Къдравите скоби {} се поставят преди и след съставни изрази.
28) Какво е значението на един алгоритъм за програмирането на C?
Преди да може да се напише програма, първо трябва да се създаде алгоритъм. Алгоритъмът предоставя стъпка по стъпка процедура за това как може да се извлече решение. Той също така действа като план за това как една програма ще започне и завърши, включително какъв процес и изчисления са включени.
29) Какво е предимството на масива пред отделните променливи?
Когато съхранявате множество свързани данни, добра идея е да използвате масиви. Това е така, защото имената на масивите се използват само с 1 дума, последвана от номер на елемент. Например: за да съхраните 10-те резултата от теста на 1 ученик, можете да използвате 10 различни имена на променливи (клас 1, клас 2, клас 3… клас 10). При масивите се използва само 1 име, останалите са достъпни чрез името на индекса (grade[0], grade[1], grade[2]… grade[9]).
30) Напишете оператор за цикъл, който ще покаже следния изход:
1
12
123
1234
12345
Отговор:
for (a=1; a<=5; i++) {
for (b=1; b<=a; b++)
printf("%d",b);
printf("\n");
}
C Въпроси и отговори за интервю за програмиране за опитни
31) Какво не е наред в това твърдение? scanf(“%d”,whatnumber);
Амперсанд и символ трябва да се поставят преди името на променливата whatnumber. Поставянето на & означава, че всяка въведена от потребителя цяло число се съхранява на „адреса“ на името на променливата. Това е често срещана грешка за програмистите, която често води до логически грешки.
32) Как се генерират произволни числа в C?
Случайните числа се генерират в C с помощта на rand() command, Например: anyNum = rand() ще генерира всяко цяло число, започващо от 0, като се приеме, че anyNum е променлива от тип integer.
33) Какъв би могъл да е проблемът, ако валидно име на функция като tolower() се докладва от C компилатора като недефинирано?
Най-вероятната причина зад тази грешка е, че заглавният файл за тази функция не е посочен в горната част на програмата. Заглавните файлове съдържат дефиницията и прототипа за функции и команди, използвани в C програма. В случай на „tolower()“, кодът „#include ” трябва да присъства в началото на програмата.
34) Какво представляват коментарите и как се вмъкват в C програма?
Коментари са чудесен начин да поставите някои забележки или описание в програма. Може да служи като напомняне за какво представлява програмата или като описание защо определен код или функция са били поставени там на първо място. Коментарите започват с /* и завършват с */. Коментарите могат да бъдат на един ред или дори да обхващат няколко реда. Може да се постави навсякъде в програмата.
35) Какво е отстраняване на грешки?
Отстраняването на грешки е процес на идентифициране на грешки в програмата. По време на компилация на програмата откритите грешки ще спрат пълното изпълнение на програмата. В това състояние програмистът ще разгледа възможните части, където е възникнала грешката. Отстраняването на грешки гарантира премахването на грешките и играе важна роля за гарантиране, че очакваният резултат от програмата е изпълнен.
36) Какво прави операторът && в програмен код?
&& се нарича още оператор И. Когато използвате този оператор, всички посочени условия трябва да са TRUE, преди да може да се извърши следващото действие. Ако имате 10 условия и всички освен 1 не успеят да бъдат оценени като TRUE, целият израз на условието вече е оценен като FALSE
37) В програмирането на C каква команда или код може да се използва, за да се определи дали числото е четно или нечетно?
Няма единна команда или функция в C който може да провери дали числото е четно или нечетно. Това обаче може да се постигне чрез разделяне на това число на 2 и след това проверка на остатъка. Ако остатъкът е 0, тогава това число е четно, в противен случай е нечетно. Можете да го напишете в код като:
if (num % 2 == 0)
printf("EVEN");
else
printf("ODD");
38) Какво означава форматът %10.2, когато е включен в команда printf?
Този формат се използва за две неща: за задаване на броя интервали, определени за изходното число, и за задаване на броя на десетичните знаци. Числото преди десетичната запетая е за разпределеното място, в този случай ще задели 10 интервала за изходното число. Ако броят на интервалите, заети от изходния номер, е по-малък от 10, допълнителните знаци за интервал ще бъдат вмъкнати преди действителния изходен номер. Числото след десетичната запетая определя броя на десетичните знаци, в този случай това са 2 знака след десетичната запетая.
39) Какво представляват логическите грешки и как се различават от синтактичните?
Програмата, която съдържа логически грешки, обикновено преминава процеса на компилиране, но резултатът може да не е очакваният. Това се случва, когато в кода е вмъкната грешна формула или е изпълнена грешна последователност от команди. Синтаксичните грешки, от друга страна, се занимават с неправилни команди, които са изписани неправилно или не са разпознати от компилатора.
40) Какви са различните типове контролни структури в програмирането?
В програмирането има 3 основни контролни структури: Последователност, Избор и Повторение. Последователното управление следва потока отгоре надолу при изпълнение на програма, така че първо се изпълнява стъпка 1, последвана от стъпка 2, докато се изпълни последната стъпка. Изборът се занимава с условни изрази, което означава, че кодовете се изпълняват в зависимост от оценката на условията като TRUE или FALSE. Това също означава, че не всички кодове могат да бъдат изпълнени и има алтернативни потоци вътре. Повторенията са известни също като циклични структури и ще повтарят един или два програмни израза, зададени от брояч.
41) Какво е || оператор и как функционира в програма?
|| е известен също като оператор ИЛИ в C програмирането. Когато използвате || за да оцените логическите условия, всяко условие, което се оценява на TRUE, ще изобрази целия израз на условието като TRUE.
42) Може ли функцията „if“ да се използва при сравняване на низове?
Не. Командата „if“ може да се използва само за сравняване на числови стойности и стойности от един знак. За сравняване на низови стойности има друга функция, наречена strcmp, която се занимава специално с низове.
43) Какво представляват директивите за препроцесор?
Директивите на препроцесора се поставят в началото на всяка C програма. Това е мястото, където се указват библиотечните файлове, които ще зависят от функциите, които ще се използват в програмата. Друга употреба на директиви за препроцесор е декларирането на константи. Директивите за препроцесор започват със символа #.
44) Какъв ще бъде резултатът от следния условен оператор, ако стойността на променливата s е 10?
s >=10 && s < 25 && s!=12
Резултатът ще бъде ИСТИНСКИ. Тъй като стойността на s е 10, s >= 10 се оценява като TRUE, защото s не е по-голямо от 10, но все пак е равно на 10. s< 25 също е TRUE, тъй като 10 е по-малко от 25. Същото, s!=12 , което означава, че s не е равно на 12, се оценява като TRUE. && е операторът AND и следва правилото, че ако всички отделни условия са TRUE, целият оператор е TRUE.
45) Опишете реда на приоритет по отношение на операторите в C.
Редът на приоритет определя коя операция трябва да се осъществи първа в оператор за операция или условен оператор. На най-горното ниво на предимство са унарните оператори !, +, – и &. Той е последван от обикновените математически оператори (*, / и модул % първо, последвани от + и -). Следващи по ред са релационните оператори <, <=, >= и >. Това е последвано от двата оператора за равенство == и !=. Логическите оператори && и || се оценяват по-нататък. На последното ниво е операторът за присвояване =.
46) Какво не е наред с това твърдение? myName = „Робин“;
Не можете да използвате знака = за присвояване на стойности на низова променлива. Вместо това използвайте функцията strcpy. Правилният израз би бил: strcpy(myName, “Robin”);
47) Как определяте дължината на низова стойност, която е била съхранена в променлива?
За да получите дължината на низова стойност, използвайте функцията strlen(). Например, ако имате променлива с име FullName, можете да получите дължината на стойността на съхранения низ, като използвате този оператор: I = strlen(FullName); променливата I сега ще има дължината на знака на стойността на низа.
48) Възможно ли е да се инициализира променлива в момента, в който е била декларирана?
Да, не е нужно да пишете отделен оператор за присвояване след декларацията на променливата, освен ако не планирате да го промените по-късно. Например: char planet[15] = “Земя”; прави две неща: декларира низова променлива с име планета, след което я инициализира със стойността „Земя“.
49) Защо езикът C се счита за език от средно ниво?
Това е така, защото езикът C е богат на функции, които го карат да се държи като език на високо ниво, като в същото време може да взаимодейства с хардуера, използвайки методи на ниско ниво. Използването на добре структуриран подход към програмирането, съчетан с подобни на английски думи, използвани във функциите, го прави да действа като език на високо ниво. От друга страна, C може директно да осъществява достъп до структури на паметта, подобни на рутинните програми на асемблерния език.
50) Какви са различните файлови разширения, включени при програмиране на C?
Изходните кодове в C се записват с файлово разширение .C. Заглавните файлове или библиотечните файлове имат файлово разширение .H. Всеки път, когато изходният код на програмата бъде успешно компилиран, той създава .OBJ обектен файл и изпълним .EXE файл.
51) Какво представляват запазените думи?
Запазените думи са думи, които са част от стандартната библиотека на език C. Това означава, че запазените думи имат специално значение и следователно не могат да се използват за цели, различни от първоначалното им предназначение. Примери за запазени думи са int, void и return.
52) Какво представлява свързаният списък?
Свързаният списък се състои от възли, които са свързани с друг. В програмирането на C свързаните списъци се създават с помощта на указатели. Използването на свързани списъци е един ефективен начин за използване на паметта за съхранение.
53) Какво е FIFO?
В програмирането на C има структура от данни, известна като опашка. В тази структура данните се съхраняват и се осъществява достъп чрез FIFO формат или First-In-First-Out. Опашката представлява ред, в който първите данни, които са били съхранени, ще бъдат и първите, които са достъпни.
54) Какво представляват двоичните дървета?
Двоичните дървета всъщност са разширение на концепцията за свързани списъци. Двоичното дърво има два указателя, ляв и десен. Всяка страна може допълнително да се разклони, за да образува допълнителни възли, като всеки възел също има два указателя. Научете повече за Двоично дърво в структурата на данните ако си заинтересован.
55) Не всички запазени думи се пишат с малки букви. ВЯРНО или НЕВЯРНО?
НЕВЯРНО. Всички запазени думи трябва да се пишат с малки букви; в противен случай C компилаторът би интерпретирал това като неидентифицирано и невалидно.
56) Каква е разликата между израза "++a" и "a++"?
В първия израз увеличението ще се случи първо на променлива a и получената стойност ще бъде тази, която ще се използва. Това също е известно като увеличение на префикса. Във втория израз текущата стойност на променлива a ще бъде тази, която ще се използва в операция, преди стойността на самата a да бъде увеличена. Това също е известно като постфиксно увеличение.
57) Какво ще се случи с X в този израз: X += 15; (ако приемем, че стойността на X е 5)
X +=15 е кратък метод за записване на X = X + 15, така че ако първоначалната стойност на X е 5, тогава 5 + 15 = 20.
58) В езика C променливите NAME, name и Name са еднакви. ВЯРНО или НЕВЯРНО?
НЕВЯРНО. Езикът C е език, чувствителен към главни и малки букви. Следователно NAME, name и Name са три уникално различни променливи.
59) Какво е безкраен цикъл?
Безкраен цикъл може да означава две неща. Едното е, че е проектирано да работи непрекъснато, докато не бъде изпълнено условието в рамките на цикъла, след което функцията за прекъсване би накарала програмата да излезе от цикъла. Друга идея за безкраен цикъл е, когато е написано неправилно условие за цикъл, което кара цикъла да работи погрешно завинаги. Безкрайните цикли често се наричат безкрайни цикли.
60) Какво е блок-схема на програмата и как тя помага при писането на програма?
Блок-схема предоставя визуално представяне на стъпка по стъпка процедура за решаване на даден проблем. Блок-схемите са съставени от символи, като всеки символ е под формата на различни форми. Всяка форма може да представлява конкретен обект в рамките на цялата структура на програмата, като например процес, условие или дори фаза на вход/изход.
61) Какво не е наред с тази програма? празнота = 10;
Думата void е запазена дума в езика C. Не можете да използвате запазени думи като дефинирана от потребителя променлива.
62) Валидна ли е тази програмна декларация? INT = 10.50;
Ако приемем, че INT е променлива от тип float, това твърдение е валидно. Някой може да си помисли, че INT е запазена дума и не трябва да се използва за други цели. Припомнете си обаче, че запазените думи се изразяват с малки букви, така че C компилаторът няма да интерпретира това като запазена дума.
63) Какви са действителните аргументи?
Когато създавате и използвате функции, които трябва да извършат действие върху някои дадени стойности, трябва да предадете тези дадени стойности на тази функция. Стойностите, които се предават в извиканата функция, се наричат действителни аргументи.
64) Какво е екранираща последователност за нов ред?
Екранираща последователност за нов ред е представена от символа \n. Това се използва за вмъкване на нов ред при показване на данни в изходния екран. Могат да се добавят повече интервали чрез вмъкване на още \n символа. Например \n\n ще вмъкне два интервала. Екранираща последователност за нов ред може да бъде поставена преди действителния изходен израз или след него.
65) Какво е пренасочване на изхода?
Това е процес на прехвърляне на данни към алтернативен изходен източник, различен от екрана на дисплея. Пренасочването на изхода позволява на програмата да запази изхода си във файл. Например, ако имате програма с име COMPUTE, въвеждането на това в командния ред като COMPUTE >DATA може да приеме вход от потребителя, да извърши определени изчисления, след което изходът да бъде пренасочен към файл с име DATA, вместо да го показва на екрана .
66) Какво представляват грешките по време на изпълнение?
Това са грешки, които възникват, докато програмата се изпълнява. Един често срещан случай, при който могат да възникнат грешки по време на изпълнение, е когато се опитвате да разделите число на нула. Когато възникнат грешки по време на изпълнение, изпълнението на програмата ще спре, показвайки кой програмен ред е причинил грешката.
67) Каква е разликата между функциите abs() и fabs()?
Тези 2 функции основно изпълняват едно и също действие, което е да получат абсолютната стойност на дадената стойност. Abs() се използва за цели числа, докато fabs() се използва за числа с плаващ тип. Освен това прототипът за abs() е под , докато fabs() е под .
68) Какво представляват формалните параметри?
При използване на функции в C програма формалните параметри съдържат стойностите, които са били предадени от извикващата функция. Стойностите се заместват в тези формални параметри и се използват във всички операции, както е посочено в основното тяло на извиканата функция.
69) Какво представляват контролните структури?
Контролните структури поемат отговорността за изпълнението на инструкциите в програмата. Това означава, че програмният поток може да не се движи непременно от един израз към следващия, а по-скоро може да се наложи някои алтернативни части да бъдат прехвърлени или заобиколени, в зависимост от резултата от условните изрази.
70) Напишете прост фрагмент от код, който ще проверява дали числото е положително или отрицателно
If (num>=0)
printf("number is positive");
else
printf ("number is negative");
71) Кога изразът „switch“ е за предпочитане пред операторът „if“?
- изявление за превключване се използва най-добре, когато се работи със селекции, базирани на една променлива или израз. Инструкциите switch обаче могат да оценяват само целочислени и символни типове данни.
72) Какво представляват глобалните променливи и как се декларират?
Глобалните променливи са променливи, които могат да бъдат достъпни и манипулирани навсякъде в програмата. За да направите променливата глобална, поставете декларацията на променливата в горната част на програмата, точно след секцията с директиви на препроцесора.
73) Какво представляват изброените типове?
Изброените типове позволяват на програмиста да използва по-смислени думи като стойности на променлива. Всеки елемент в променливата на изброения тип всъщност е свързан с цифров код. Например, може да се създаде променлива от изброен тип с име DAYS, чиито стойности са Monday, вторник… неделя.
74) Какво прави функцията toupper()?
Използва се за преобразуване на всяка буква в режим на главни букви. Прототипът на функцията Toupper() е деклариран в . Имайте предвид, че тази функция ще конвертира само един знак, а не цял низ.
75) Възможно ли е да има функция като параметър в друга функция?
Да, това е позволено в C програмирането. Просто трябва да включите целия прототип на функцията в полето за параметри на другата функция, където ще се използва.
76) Какво представляват многомерните масиви?
Многомерните масиви са способни да съхраняват данни в двумерна или повече измерна структура. Например, можете да използвате двуизмерен масив, за да съхранявате текущата позиция на фигурите в шахматна игра или позицията на играчите в програма за игра на тик-так.
77) Коя функция в C може да се използва за добавяне на низ към друг низ?
Функцията strcat. Необходими са два параметъра, изходният низ и стойността на низа, които да бъдат добавени към изходния низ.
78) Каква е разликата между функциите getch() и getche()?
И двете функции ще приемат стойност за въвеждане на знаци от потребителя. Когато използвате getch(), натиснатият клавиш няма да се появи на екрана и автоматично се улавя и присвоява на променлива. Когато използвате getche(), клавишът, който е бил натиснат от потребителя, ще се появи на екрана, като в същото време ще бъде присвоен на променлива.
79) Тези два програмни оператора изпълняват ли един и същ резултат? 1) scanf(“%c”, &буква); 2) letter=getchar()
Да, и двамата правят точно едно и също нещо, което е да приемат следващия клавиш, натиснат от потребителя, и да го присвояват на променлива, наречена буква.
80) Какви са типовете структури в C?
Типовете структури се използват предимно за съхраняване на записи. Записът се състои от свързани полета. Това улеснява организирането на група от свързани данни.
81) Какво означават знаците “r” и “w” при писане на програми, които ще използват файлове?
„r“ означава „четене“ и ще отвори файл като вход, в който данните трябва да бъдат извлечени. „w“ означава „запис“ и ще отвори файл за изход. Предишните данни, които са били съхранени в този файл, ще бъдат изтрити.
82) Каква е разликата между текстови файлове и двоични файлове?
Текстовите файлове съдържат данни, които лесно могат да бъдат разбрани от хората. Той включва букви, цифри и други знаци. От друга страна, бинарните файлове съдържат 1s и 0s, които само компютрите могат да интерпретират.
83) възможно ли е да създадете свои собствени заглавни файлове?
Да, възможно е да създадете персонализиран заглавен файл. Просто включете в него прототипите на функциите, които искате да използвате във вашата програма, и използвайте директивата #include, последвана от името на вашия заглавен файл.
84) Какво представлява динамичната структура на данните?
Динамичната структура на данните осигурява средство за по-ефективно съхраняване на данни в паметта. Използване Използване динамично разпределение на паметта, вашата програма ще има достъп до пространствата в паметта, ако е необходимо. Това е в контраст със статичната структура на данните, при която програмистът трябва да посочи фиксиран брой пространство в паметта, което да се използва в програмата.
85) Какви са различните типове данни в C?
Основното типове данни в C са int, char и float. Int се използва за деклариране на променливи, които ще съхраняват цели числа. Float се използва за съхраняване на реални числа. Char може да съхранява индивидуални стойности на знаци.
86) Каква е общата форма на C програма?
AC програмата започва с директивите на препроцесора, в които програмистът ще посочи кой заглавен файл и какви константи (ако има такива) да се използват. Това е последвано от заглавието на основната функция. В основната функция се крие декларацията на променливата и програмния оператор.
87) Какво е предимството на файла с произволен достъп?
Ако количеството данни, съхранявани във файл, е доста голямо, използването на произволен достъп ще ви позволи да търсите в него по-бързо. Ако беше файл с последователен достъп, ще трябва да преминете през един запис наведнъж, докато достигнете целевите данни. Файл с произволен достъп ви позволява да преминете директно към целевия адрес, където се намират данните.
88) В оператор switch, какво ще се случи, ако операторът break бъде пропуснат?
Ако изразът за прекъсване не е поставен в края на конкретна част от случая? Той ще премине към следващата част от случая, което вероятно ще причини неправилен резултат.
89) Опишете как масивите могат да бъдат предадени на дефинирана от потребителя функция
Едно нещо, което трябва да се отбележи е, че не можете да предадете целия масив на функция. Вместо това му предавате указател, който ще сочи към първия елемент на масива в паметта. За да направите това, посочвате името на масива без скобите.
90) Какво представляват указателите?
Указатели точка към определени области в паметта. Указателите съдържат адреса на променлива, която от своя страна може да съдържа стойност или дори адрес към друга памет.
91) Можете ли да предадете цяла структура на функции?
Да, възможно е да прехвърлите цяла структура към функция в извикване чрез стил на метод. Някои програмисти обаче предпочитат да декларират структурата глобално, след което да предадат променлива от този структурен тип на функция. Този метод помага да се поддържа последователност и еднаквост по отношение на типа аргумент.
92) Какво представлява функцията gets()?
- gets() function позволява пълно въвеждане на данни от потребителя. Когато потребителят натисне клавиша enter, за да прекрати въвеждането, целият ред от знаци се съхранява в низова променлива. Обърнете внимание, че клавишът за въвеждане не е включен в променливата, но вместо това след последния знак се поставя нулев терминатор \0.
93) Символът % има специална употреба в команда printf. Как бихте поставили този знак като част от изхода на екрана?
Можете да направите това, като използвате %% в командата printf. Например, можете да напишете printf(“10%%”), за да се появи изходът като 10% на екрана.
94) Как търсите данни във файл с данни чрез метода на произволен достъп?
Използвайте fseek() функция за извършване на вход/изход с произволен достъп на файл. След като файлът беше отворен от функцията fopen(), fseek ще изисква три параметъра, за да работи: файлов указател към файла, броя на байтовете за търсене и точката на произход във файла.
95) Включени ли са коментарите по време на етапа на компилиране и също ли са поставени в EXE файла?
Не, коментарите, които са били открити от компилатора, се пренебрегват. Коментарите са предимно само за насоки на програмиста и нямат друга значима употреба във функционалността на програмата.
96) Има ли вградена функция в C, която може да се използва за сортиране на данни?
Да, използвайте qsort() функция. Възможно е също така да се създадат дефинирани от потребителя функции за сортиране, като тези, базирани на сортиране с балон и алгоритъм за сортиране с балон.
97) Какви са предимствата и недостатъците на купчината?
Съхраняването на данни в купчината е по-бавно, отколкото би било необходимо при използване на стека. Въпреки това, основното предимство на използването на купчината е нейната гъвкавост. Това е така, защото паметта в тази структура може да бъде разпределяна и премахвана във всеки определен ред. Бавността в купчината може да бъде компенсирана, ако алгоритъмът е добре проектиран и внедрен.
98) Как се преобразуват низове в числа в C?
Можете да напишете свои собствени функции, за да извършвате преобразувания от низ към число, или вместо това да използвате вградените функции на C. Можете да използвате atof за преобразуване в стойност с плаваща запетая, atoi за преобразуване в цяло число и atol за преобразуване в дълго цяло число.
99) Създайте прост кодов фрагмент, който ще размени стойностите на две променливи num1 и num2.
int temp; temp = num1; num1 = num2; num2 = temp;
100) Каква е употребата на точка и запетая (;) в края на всеки програмен оператор?
Това е свързано с процеса на анализиране и компилиране на кода. Точка и запетая действа като разделител, така че компилаторът да знае къде завършва всеки израз и може да продължи да разделя оператора на по-малки елементи за проверка на синтаксиса.
Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)

