Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Some Multiple choice questions in C (http://www.go4expert.com/forums/multiple-choice-questions-c-t9/)

shabbir 20Jul2004 07:57

Some Multiple choice questions in C
 
/*question number 1*/
int z,x=5,y=-10,a=4,b=2;
z = x++ - --y * b / a;
What number will z in the sample code above contain?
Choice 1 5
Choice 2 6
Choice 3 10
Choice 4 11
Choice 5 12
__________________________________________________ _____________________

/*question number 2*/
With every use of a memory allocation function, what function should be used to release allocated memory which is no longer needed?
Choice 1 unalloc()
Choice 2 dropmem()
Choice 3 dealloc()
Choice 4 release()
Choice 5 free()
__________________________________________________ _____________________

/*question number 3*/
void *ptr;
myStruct myArray[10];
ptr = myArray;
Which of the following is the correct way to increment the variable "ptr"?
Choice 1 ptr = ptr + sizeof(myStruct);
Choice 2 ++(int*)ptr;
Choice 3 ptr = ptr + sizeof(myArray);
Choice 4 increment(ptr);
Choice 5 ptr = ptr + sizeof(ptr);
__________________________________________________ _____________________

/*question number 4*/
char* myFunc (char *ptr)
{
ptr += 3;
return (ptr);
}
int main()
{
char *x, *y;
x = "HELLO";
y = myFunc (x);
printf ("y = %s \n", y);
return 0;
}
What will print when the sample code above is executed?
Choice 1 y = HELLO
Choice 2 y = ELLO
Choice 3 y = LLO
Choice 4 y = LO
Choice 5 x = O
__________________________________________________ _____________________

/*question number 5*/
struct node *nPtr, *sPtr; /* pointers for a linked list. */
for (nPtr=sPtr; nPtr; nPtr=nPtr->next)
{
free(nPtr);
}
The sample code above releases memory from a linked list. Which of the choices below accurately describes how it will work?
Choice 1 It will work correctly since the for loop covers the entire list.
Choice 2 It may fail since each node "nPtr" is freed before its next address can be accessed.
Choice 3 In the for loop, the assignment "nPtr=nPtr->next" should be changed to "nPtr=nPtr.next".
Choice 4 This is invalid syntax for freeing memory.
Choice 5 The loop will never end.
__________________________________________________ _____________________

/*question number 6*/
What function will read a specified number of elements from a file?
Choice 1 fileread()
Choice 2 getline()
Choice 3 readfile()
Choice 4 fread()
Choice 5 gets()
__________________________________________________ _____________________

/*question number 7*/
"My salary was increased by 15%!"
Select the statement which will EXACTLY reproduce the line of text above.
Choice 1 printf("\"My salary was increased by 15/%\!\"\n");
Choice 2 printf("My salary was increased by 15%!\n");
Choice 3 printf("My salary was increased by 15'%'!\n");
Choice 4 printf("\"My salary was increased by 15%%!\"\n");
Choice 5 printf("\"My salary was increased by 15'%'!\"\n");
__________________________________________________ _____________________

/*question number 8*/
What is a difference between a declaration and a definition of a variable?
Choice 1 Both can occur multiple times, but a declaration must occur first.
Choice 2 There is no difference between them.
Choice 3 A definition occurs once, but a declaration may occur many times.
Choice 4 A declaration occurs once, but a definition may occur many times.
Choice 5 Both can occur multiple times, but a definition must occur first.
__________________________________________________ _____________________

/*question number 9*/
int testarray[3][2][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
What value does testarray[2][1][0] in the sample code above contain?
Choice 1 3
Choice 2 5
Choice 3 7
Choice 4 9
Choice 5 11
__________________________________________________ _____________________
/*question number 10*/
int a=10,b;
b=a++ + ++a;
printf("%d,%d,%d,%d",b,a++,a,++a);
what will be the output when following code is executed
choice 1 12,10,11,13
choice 2 22,10,11,13
choice 3 22,11,11,11
choice 4 12,11,11,11
choice 5 22,13,13,13

alok 26Jul2004 15:12

Re: Some Multiple choice questions in C
 
*question number 1*/
int z,x=5,y=-10,a=4,b=2;
z = x++ - --y * b / a;
What number will z in the sample code above contain?
Choice 3 10 :)

__________________________________________________ _____________________

/*question number 2*/
With every use of a memory allocation function, what function should be used to release allocated memory which is no longer needed?
Choice 5 free() :D
__________________________________________________ _____________________

/*question number 3*/
void *ptr;
myStruct myArray[10];
ptr = myArray;
Which of the following is the correct way to increment the variable "ptr"?
:( soory i couln't find the answer
__________________________________________________ _____________________

/*question number 4*/
char* myFunc (char *ptr)
{
ptr += 3;
return (ptr);
}
int main()
{
char *x, *y;
x = "HELLO";
y = myFunc (x);
printf ("y = %s \n", y);
return 0;
}
What will print when the sample code above is executed?
Choice 3 y = LO :)

__________________________________________________ _____________________

/*question number 5*/
struct node *nPtr, *sPtr; /* pointers for a linked list. */
for (nPtr=sPtr; nPtr; nPtr=nPtr->next)
{
free(nPtr);
}
The sample code above releases memory from a linked list. Which of the choices below accurately describes how it will work?

Choice 2 It may fail since each node "nPtr" is freed before its next address can be accessed. :)
__________________________________________________ _____________________

/*question number 6*/
What function will read a specified number of elements from a file?
Choice 4 fread()

__________________________________________________ _____________________

/*question number 7*/
"My salary was increased by 15%!"
Select the statement which will EXACTLY reproduce the line of text above.
/
Choice 4 printf("\"My salary was increased by 15%%!\"\n"); ;)
/
__________________________________________________ _____________________

/*question number 8*/
What is a difference between a declaration and a definition of a variable?
acorrding to C++
Choice 1 Both can occur multiple times, but a declaration must occur first.
according to C
Choice 3 A definition occurs once, but a declaration may occur many times.

__________________________________________________ _____________________

/*question number 9*/
int testarray[3][2][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
What value does testarray[2][1][0] in the sample code above contain?

Choice 5 11 ;)
__________________________________________________ _____________________
/*question number 10*/
int a=10,b;
b=a++ + ++a;
printf("%d,%d,%d,%d",b,a++,a,++a);
what will be the output when following code is executed
choice 5 22,13,13,13 :)


I think i solved most of question,but think my c knowledge need more brush up

coderzone 2Apr2006 14:49

Re: Some Multiple choice questions in C
 
Added 100 Multiple choice questions in C but some of them may be repeated from shab's post.

humhaingaurav 29Jan2008 00:13

Re: Some Multiple choice questions in C
 
Hi,

One of the solution which you have posted in "Multiple choice C++ question" is wrong.

Question is:
/*question number 10*/
Code:

int a=10,b; b=a++ + ++a; printf("%d,%d,%d,%d",b,a++,a,++a);


what will be the output when following code is executed
Choice 1
12,10,11,13
Choice 2
22,10,11,13
Choice 3
22,11,11,11
Choice 4
12,11,11,11
Choice 5
22,13,13,13[Ans]

The correct answer will be 22,13,14,14
Because if you look at the operator precedence then PreIncerement operator has higher precedence than print operator. Therefore, when we write printf("%d,%d,%d,%d",b,a++,a,++a);
so here 'a++' then '++a' gets executed and then 'a' gets executed therefore we get result as 22,13,14,14.

Hope you will correct this.

Thanks
~Gaurav

oogabooga 29Jan2008 01:41

Re: Some Multiple choice questions in C
 
Performing an action in an argument list that has a side-effect on another argument in the list is ill-advised since the order that the arguments are processed is undefined in C.
Code:

int a = 1;
func( a, ++a );

The arguments can be processed in either order, so func could get either 1, 2 or 2, 2. Isn't that correct?

Having said that, mingw/gcc prints 22,13,13,13.

Salem 29Jan2008 01:54

Re: Some Multiple choice questions in C
 
> The correct answer will be 22,13,14,14
That's no more correct than any other explanation.

http://c-faq.com/expr/evalorder2.html
If you modify the same variable twice with either ++ or -- between sequence points, then the whole program is UNDEFINED.
So what you get is entirely at the whim of the compiler and no guarantee that anyone else will have the same result (or any result at all for that matter).

humhaingaurav 29Jan2008 03:32

Re: Some Multiple choice questions in C
 
Yes that's correct. However, if you look at it from the C++ point of view then pre increment has higher precedence. And since we are doing multiple mathematical operations in the ouput statement, so when it comes to pre increment and << (which is bitwise left shift) it gives higher precedence to pre-increment and therefore it first executes ++ and then it outputs a. Therefore, it will always give result ..,..,14,14

oogabooga 29Jan2008 04:36

Re: Some Multiple choice questions in C
 
Quote:

Therefore, it will always give result ..,..,14,14
I just said that my system gives ...,...,13,13. So clearly it doesn't always give 14,14. Here is a piece of *bad* code and my output. Try it for yourself?
Code:

/* Caveat utilitor: broken code ahead!
 * For demonstration purposes only.
 */
#include <stdio.h>

void f(int a, int b) { printf("%d %d\n", a, b); }

int main() {
    int a;
    a = 1;  printf("Pre:  f(++a, a) --> ");  f(++a, a);
    a = 1;  printf("      f(a, ++a) --> ");  f(a, ++a);
    a = 1;  printf("Post: f(a++, a) --> ");  f(a++, a);
    a = 1;  printf("      f(a, a++) --> ");  f(a, a++);
}

Output:
Pre:  f(++c, c) --> 2 1
      f(d, ++d) --> 2 2
Post: f(a++, a) --> 1 1
      f(b, b++) --> 2 1


Salem 29Jan2008 05:20

Re: Some Multiple choice questions in C
 
Evaluation of precedence and evaluation of side effects are NOT synchronised in any way. Read the FAQ and try to get to grips with "before", "after" and "sequence points".

If you believe that given
a * b + ++c;
that the increment of c only happens between the multiply of a*b and before the addition of the modified value of c, then you're very much mistaken. The language makes no such guarantees about such behaviour, and if you assume it does, you're going to get burned.

Simply saying "this works for me" is no substitute for understanding these basic rules. And if you don't understand them, then you're laying yourself open to being burnt with some pretty obscure effects if you use them in a large program.

Now whilst the FAQ I posted refers to C, you can be sure that the same rules apply to C++ as well.

And now, some results from the test program.
Code:

$ gcc -W -Wall -ansi -pedantic -O2 foo.c
foo.c: In function `main':
foo.c:7: warning: operation on `a' may be undefined
foo.c:8: warning: operation on `a' may be undefined
foo.c:9: warning: operation on `a' may be undefined
foo.c:10: warning: operation on `a' may be undefined
$ ./a.exe
Pre:  f(++a, a) --> 2 1
      f(a, ++a) --> 2 2
Post: f(a++, a) --> 1 1
      f(a, a++) --> 2 1
$ gcc -W -Wall -ansi -pedantic -O3 foo.c
foo.c: In function `main':
foo.c:7: warning: operation on `a' may be undefined
foo.c:8: warning: operation on `a' may be undefined
foo.c:9: warning: operation on `a' may be undefined
foo.c:10: warning: operation on `a' may be undefined
$ ./a.exe
Pre:  f(++a, a) --> 2 2
      f(a, ++a) --> 1 2
Post: f(a++, a) --> 1 2
      f(a, a++) --> 1 1

Well how about that then!?
Changing the optimisation level changes the results.

Which is pretty obvious really. The compiler warned about possible undefined operations, and it came through in spades with different results.

Optimisation does not affect the results of a correct program, but will generally play havoc with an undefined program.

Lets try with VC6
Code:

> cl /nologo foo.c
foo.c

> foo.exe
Pre:  f(++a, a) --> 2 1
      f(a, ++a) --> 2 2
Post: f(a++, a) --> 1 1
      f(a, a++) --> 1 1

> cl /O2 /nologo foo.c
foo.c

> foo.exe
Pre:  f(++a, a) --> 2 2
      f(a, ++a) --> 2 2
Post: f(a++, a) --> 1 2
      f(a, a++) --> 2 1

Wow, even more fun from the broken code.

4 different compilations, 4 different sets of results. This is NOT GOOD CODE.


That is, after all, what my signature line means.

asadullah.ansari 29Jan2008 11:35

Re: Some Multiple choice questions in C
 
Question NO: 1
Choice 3: 10

Question No: 2
Choice 5: free()

Question 3:
Choice 4: By providing function by user can increment that pointer.

Question 4:
Choice 4 y = LO

QUESTION 5:
Choice 2 It may fail since each node "nPtr" is freed before its next address can be accessed.

QUESTION


All times are GMT +5.5. The time now is 17:40.