51) main(
)
{
void *vp;
char ch = ‘g’, *cp = “goofy”;
int j = 20;
vp = &ch;
printf(“%c”, *(char *)vp);
vp = &j;
printf(“%d”,*(int *)vp);
vp = cp;
printf(“%s”,(char *)vp + 3);
}
Answer:
g20fy
Explanation:
Since a
void pointer is used it can be type casted to any other type pointer. vp = &ch stores address of char ch and the next
statement prints the value stored in vp after type casting it to the proper
data type pointer. the output is ‘g’. Similarly
the output from second printf is ‘20’. The third printf statement type
casts it to print the string from the 4th value hence the output is
‘fy’.
52) main
( )
{
static char *s[ ] = {“black”, “white”, “yellow”, “violet”};
char **ptr[ ] = {s+3, s+2, s+1, s}, ***p;
p = ptr;
**++p;
printf(“%s”,*--*++p + 3);
}
Answer:
ck
Explanation:
In this
problem we have an array of char pointers pointing to start of 4 strings. Then
we have ptr which is a pointer to a pointer of type char and a variable p which
is a pointer to a pointer to a pointer of type char. p hold the initial value
of ptr, i.e. p = s+3. The next statement increment value in p by 1 , thus now
value of p = s+2. In the printf
statement the expression is evaluated *++p causes gets value s+1 then the pre
decrement is executed and we get s+1 - 1 = s . the indirection operator now
gets the value from the array of s and adds 3 to the starting address. The
string is printed starting from this position. Thus, the output is ‘ck’.
53) main()
{
int i,
n;
char *x = “girl”;
n = strlen(x);
*x = x[n];
for(i=0; i<n; ++i)
{
printf(“%s\n”,x);
x++;
}
}
Answer:
(blank
space)
irl
rl
l
Explanation:
Here a
string (a pointer to char) is initialized with a value “girl”. The strlen function returns the length of the
string, thus n has a value 4. The next statement assigns value at the nth
location (‘\0’) to the first location. Now the string becomes “\0irl” . Now the
printf statement prints the string after each iteration it increments it
starting position. Loop starts from 0 to
4. The first time x[0] = ‘\0’ hence it prints nothing and pointer value is
incremented. The second time it prints from x[1] i.e “irl” and the third time
it prints “rl” and the last time it prints “l” and the loop terminates.
54) int
i,j;
for(i=0;i<=10;i++)
{
j+=5;
assert(i<5);
}
Answer:
Runtime
error: Abnormal program termination.
assert
failed (i<5), <file name>,<line number>
Explanation:
asserts
are used during debugging to make sure that certain conditions are satisfied.
If assertion fails, the program will terminate reporting the same. After
debugging use,
#undef NDEBUG
and
this will disable all the assertions from the source code. Assertion
is
a good debugging tool to make use of.
55) main()
{
int
i=-1;
+i;
printf("i
= %d, +i = %d \n",i,+i);
}
Answer:
i = -1, +i = -1
Explanation:
Unary
+ is the only dummy operator in C. Where-ever it comes you can just ignore it
just because it has no effect in the expressions (hence the name dummy
operator).
56) What
are the files which are automatically opened when a C file is executed?
Answer:
stdin,
stdout, stderr (standard input,standard output,standard error).
57) what will be the position of the file
marker?
a:
fseek(ptr,0,SEEK_SET);
b:
fseek(ptr,0,SEEK_CUR);
Answer :
a: The SEEK_SET sets the file
position marker to the starting of the file.
b:
The SEEK_CUR sets the file position marker to the current position
of the file.
58) main()
{
char
name[10],s[12];
scanf("
\"%[^\"]\"",s);
}
How
scanf will execute?
Answer:
First it
checks for the leading white space and discards it.Then it matches with a
quotation mark and then it reads all
character upto another quotation mark.
59) What
is the problem with the following code segment?
while
((fgets(receiving array,50,file_ptr)) != EOF)
;
Answer &
Explanation:
fgets
returns a pointer. So the correct end of file check is checking for != NULL.
60) main()
{
main();
}
Answer:
Runtime error : Stack overflow.
Explanation:
main
function calls itself again and again. Each time the function is called its
return address is stored in the call stack. Since there is no condition to
terminate the function call, the call stack overflows at runtime. So it
terminates the program and results in an error.
No comments:
Post a Comment