Wednesday, April 29, 2009

C interview questions


Question: What is C language?

Answers: The C programming language is developed in the early 1970s by Ken Thompson and Dennis Ritchie for use on the UNIX operating system. It has since extend to lots of other operating systems, and is one of the most extensively used programming languages. C is prized for its competence, and is the most popular programming language for developing system software, though it is also used for writing applications.

Question: What will be the output of printf("%d")?



Answers: 1. When we write printf("%d",x); this means compiler will print the value of x. But as here, there is not anything after %d so compiler gives garbage value on output window.

2. When we use %d the compiler internally uses it to access the argument in the stack (argument stack). Preferably compiler establishes the offset of the data variable depending on the format requirement string. Now when we write printf("%d", a) then compiler first accesses the top most element in the argument stack of the printf which is %d and according to that format string it calculated to offset to the real data variable in the memory which is to be printed. Now when only %d will be there in the printf then compiler will compute the correct offset (which will be the offset to access the integer variable) but as the actual data object is to be printed is not there at that memory location so it will print what ever will be the inside of that memory location.

3. Some compilers verify the format string and will generate an error without the proper number and type of arguments for things like printf(...) and scanf(...).



Question: malloc() Function- What is the difference between "calloc(...)" and "malloc(...)"?

Answers:

1. calloc(...) allot a block of memory for an array of elements of a definite size. By default the block is initialized to 0. The total number of memory allocated will be (number_of_elements * size).

malloc(...) takes in only a single argument which is the memory required in bytes. malloc(...) allocated bytes of memory and not blocks of memory like calloc(...).

2. malloc(...) allot memory blocks and returns a void pointer to the allocated space, or NULL if there is insufficient memory available.

calloc(...) allot an array in memory with elements initialized to 0 and returns a pointer to the allocated space.

calloc(...) calls malloc(...) in order to use the C++ _set_new_mode function to set the new handler mode.


Question: printf() Function- What is the difference between "printf(...)" and "sprintf(...)"?

Answers: sprintf(...) writes data to the character array whereas printf(...) writes data to the standard output device.

Question: How to reduce an ending size of executable?

Answers: Size of the final executable can be reduced using DLL(dynamic linking for libraries).



Question: Linked Lists -- Can you tell me how to ensure whether a linked list is circular or not?

Answers: Create two pointers, and set both to the start of the list. Update each as follows:

while (pointer1) {pointer1 = pointer1->next;

pointer2 = pointer2->next;

if (pointer2) pointer2=pointer2->next;

if (pointer1 == pointer2) {print ("circular");

}}

If a list is circular, at some point pointer2 will bind around and be either at the item just before pointer1, or the item before that. Either way, its either 1 or 2 jumps until they meet.



Question:"union" Data Type What is the output of the following program? Why?




Answers:

#include

main() {

typedef union {

int a;char b[10];

float c;

}

Union;

Union x,y = {100};

x.a = 50;

strcpy(x.b,"hello");

x.c = 21.50;

printf("Union x : %d %s %f n",x.a,x.b,x.c);

printf("Union y : %d %s %f n",y.a,y.b,y.c);

}

Question: String Processing --- Write out a function that prints out all the permutations of a string. For example, abc would give you abc, acb, bac, bca, cab, cba.

Answers :

void PrintPermu (char *sBegin, char* sRest)

{

int iLoop;

char cTmp;

char cFLetter[1];

char *sNewBegin;

char *sCur;int iLen;

static int iCount;

iLen = strlen(sRest);

if (iLen == 2) {iCount++;

printf("%d: %s%sn",iCount,sBegin,sRest);

iCount++;printf("%d: %s%c%cn",iCount,sBegin,sRest[1],sRest[0]);return;

}

else if (iLen == 1) {iCount++;

printf("%d: %s%sn", iCount, sBegin, sRest);return;

}

else

{

// swap the first character of sRest with each of

// the remaining chars recursively call debug print

sCur = (char*)malloc(iLen);

sNewBegin = (char*)malloc(iLen);

for (iLoop = 0; iLoop <>

iLoop ++)

{

strcpy(sCur, sRest);

strcpy(sNewBegin, sBegin);

cTmp = sCur[iLoop];

sCur[iLoop] = sCur[0];sCur[0] = cTmp;sprintf(cFLetter, "%c", sCur[0]);

strcat(sNewBegin, cFLetter);

debugprint(sNewBegin, sCur+1);

}}}

void main()

{char s[255];

char sIn[255];

printf("nEnter a string:");

scanf("%s%*c",sIn);

memset(s,0,255);

PrintPermu(s, sIn);

}
Author Resource:- c interview question, interview questions in c, c programming interview questions

Related Articles :


Stumble
Delicious
Technorati
Twitter
Facebook

0 comments:

Post a Comment

Career Launchers!!!

Note:

This blog can be viewed using all the browsers but can be best viewed in Mozilla Browser.
 

Career Launchers!!! Copyright © 2010 LKart Theme is Designed by Lasantha