edited by
6,233 views
8 votes
8 votes

Consider the following $C$ code.

#include <stdio.h> 
#include <math.h> 
void main ()  
{  
      double pi = 3.1415926535;   
      int a = 1;  
      int i;    
      for (i=0; i < 3; i++) 
            if (a = cos(pi * i/2)) 
                  printf("% d", 1);  
            else printf("%d", 0); 
}

What would the program print?

  1. $000$
  2. $010$
  3. $101$
  4. $111$
edited by

4 Answers

Best answer
14 votes
14 votes

Initially I thought there is a typo in this line

if (a = cos(pi * i/2))

Then I checked the ISRO paper and found that it is correct i.e. @makhdoom has not done any mistake.

According to that,

i = 0  : Cos(0), i.e. a = 1 i.e. condition will be True, hence it will print 1.

i = 1  : Cos(Pi/2) i.e. a = 0 i.e. Condition will be False, Hence It will print 0.

i = 2  : Cos(Pi) i.e. a = -1, i.e. Condition will be True, Hence It will print 1.

Hence answer is C. 101

selected by
9 votes
9 votes

for i=0  

if(a=cos0)  that means  if(1) which means true . //here a is use for assignment. and on the basis of assigning value of a if condition is checked

then print 1

then for i=1

if(a=cos(pi/2) that means if(0) which is false then print 0 bcz it is treat as if(a) here a is 0

then for i=2

if(a=cos(pi)) that means if(-1) which is true then print 1  same thing hereit is treat as if(a) here a is -1

so answer is 101

2 votes
2 votes
I am answering through elimination technique

cos(pi*0/2)=cos(0)=1

if(a=1) prints 1 //if(a=0) then only will not enter if condition else it enters//

so a and b options are eliminated.

cos(pi/2) surely not 1 (because cos 0=1 )

so answer is c

comments are welcome!!!
0 votes
0 votes

Quoting C11 Assignment operators

An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment,111) but is not an lvalue.

therefore, answer is d 111.

but, anyway i am not 100% sure. stackoverflow is also supporting option d.

Answer:

Related questions

11 votes
11 votes
4 answers
1
1 votes
1 votes
1 answer
2
Deepalitrapti asked Sep 20, 2018
785 views
2 votes
2 votes
1 answer
3
Çșȇ ʛấẗẻ asked Aug 28, 2016
380 views
Consider the following code:int P=0; for (i=1; i<2n; i++) { for (j=1; j<=n; j++) { if (j<i) P =P+1; } } printf(“%d”, P);What is the output printed by the above code i...