in Programming in C edited by
6,292 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$
in Programming in C edited by
6.3k views

1 comment

@makhdoom, Is there any typo, I mean check the condition in if. It is single = or double ==. Verify this?
0
0

4 Answers

14 votes
14 votes
Best answer

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
by

4 Comments

When I=2 than how 3.1*I/2=-1 give some explanation
1
1

yess true because for assignment operation value  will be assigned and will enter into if loop every time hence ans should be D)111

you can check this : https://www.sololearn.com/Discuss/1374478/can-we-put-assignment-operator-in-if-condition

1
1
can anyone explain how cos(Pi) = -1 ?
0
0
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

by

4 Comments

@srestha and @rude  

o shit!!  i forget to change it .so its blunder now see the solution yr
1
1
ya Now done :)
1
1
I think printf() stmt also wrong.if we want to print 0 and 1 wats the need of use %d. 0 and 1 are not variables.
1
1
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.