Search Your Dream Job Here

C Programming Interview Questions Part Three

Note : All the programs are tested under Turbo C/C+ compilers.




1.

main()
{
char *p;
p="Hello";
printf("%c\n",*&*p);
}

Answer:

H

Explanation:

* is a dereference operator & is a reference operator. They can be
applied any number of times provided it is meaningful. Here p
points to the first character in the string "Hello". *p dereferences it
and so its value is H. Again & references it to an address and *
dereferences it to the value H.


2)

 main()
{
int i=1;
while (i<=5)
{
printf("%d",i);
if (i>2)
goto here;
i++;
}
}
fun()
{
here:
printf("PP");
}


Answer:
Compiler error: Undefined label 'here' in function main

Explanation:
Labels have functions scope, in other words the scope of the labels
is limited to functions. The label 'here' is available in function fun()
Hence it is not visible in function main.


3)

 main()
{
static char names[5][20]={"pascal","ada","cobol","fortran","perl"};
int i;
char *t;
t=names[3];
names[3]=names[4];
names[4]=t;
for (i=0;i<=4;i++)
printf("%s",names[i]);
}

Answer:
Compiler error: Lvalue required in function main

Explanation:
Array names are pointer constants. So it cannot be modified.


4)

 void main()
{
int i=5;
printf("%d",i++ + ++i);
}

Answer:
Output Cannot be predicted exactly.

Explanation:

Side effects are involved in the evaluation of i


5)

void main()
{
int i=5;
printf("%d",i+++++i);
}


Answer:
Compiler Error
Explanation:
The expression i+++++i is parsed as i ++ ++ + i which is an
illegal combination of operators.


6)

 #include<stdio.h>
main()
{
int i=1,j=2;
switch(i)
{
case 1: printf("GOOD");
break;
case j: printf("BAD");
break;
}
}

Answer:
Compiler Error: Constant expression required in function main.
Explanation:
The case statement can have only constant expressions (this
implies that we cannot use variable names directly so an error).

Note:
Enumerated types can be used in case statements.


7) main()
{
int i;
printf("%d",scanf("%d",&i)); // value 10 is given as input here
}

Answer:
1

Explanation:
Scanf returns number of items successfully read and not 1/0. Here
10 is given as input which should have been scanned successfully.
So number of items read is 1.


8)

 #define f(g,g2) g##g2
main()
{
int var12=100;
printf("%d",f(var,12));
}

Answer:
100


9)

 main()
{
int i=0;
for(;i++;printf("%d",i)) ;
printf("%d",i);
}

Answer:
1
Explanation:
before entering into the for loop the checking condition is
"evaluated". Here it evaluates to 0 (false) and comes out of the
loop, and i is incremented (note the semicolon after the for loop).


10)

 #include<stdio.h>
main()
{
char s[]={'a','b','c','\n','c','\0'};
char *p,*str,*str1;
p=&s[3];
str=p;
str1=s;
printf("%d",++*p + ++*str1-32);
}

Answer:
M

Explanation:
p is pointing to character '\n'.str1 is pointing to character 'a' ++*p
meAnswer:"p is pointing to '\n' and that is incremented by one."
the ASCII value of '\n' is 10. then it is incremented to 11. the value
of ++*p is 11. ++*str1 meAnswer:"str1 is pointing to 'a' that is
incremented by 1 and it becomes 'b'. ASCII value of 'b' is 98. both
11 and 98 is added and result is subtracted from 32.
i.e. (11+98-32)=77("M");


11)

 #include<stdio.h>
main()
{
struct xx
{
int x=3;
char name[]="hello";
};
struct xx *s=malloc(sizeof(struct xx));
printf("%d",s->x);
printf("%s",s->name);
}

Answer:
Compiler Error

Explanation:
Initialization should not be done for structure members inside the
structure declaration


12)
 #include<stdio.h>
main()
{
struct xx
{
int x;
struct yy
{
char s;
struct xx *p;
};
struct yy *q;
};
}

Answer:
Compiler Error

Explanation:
in the end of nested structure yy a member have to be declared.


13) main()
{
extern int i;
i=20;
printf("%d",sizeof(i));
}

Answer:
Linker error: undefined symbol '_i'.

Explanation:
extern declaration specifies that the variable i is defined
somewhere else. The compiler passes the external variable to be
resolved by the linker. So compiler doesn't find an error. During
linking the linker searches for the definition of i. Since it is not
found the linker flags an error.


14) main()
{
printf("%d", out);
}
int out=100;

Answer:

Compiler error: undefined symbol out in function main.

Explanation:
The rule is that a variable is available for use from the point of
declaration. Even though a is a global variable, it is not available
for main. Hence an error.


15)

 main()
{
extern out;
printf("%d", out);
}
int out=100;

Answer:
100

Explanation:

This is the correct way of writing the previous program.

Last Updated Date: March 23, 2012

0 comments:

Post a Comment

Popular Posts in this Weak