SSC IMD SA Mock 03 – Question 168

Question:

\(What is the output of the following ‘C’ language statements?

#include<stdio.h>
int main(){
int a=10,b=20,*p1=&a,*p2=&b;
printf("Before : **p1=%d **p2=%d",*p1,*p2);
*p1=*p1+*p2;
*p2=*p1-*p2;
*p1=*p1-*p2;
printf("\nAfter : **p1=%d **p2=%d",*p1,*p2);
return 0;
}

\)

\(निम्नलिखित ‘C’ लैंग्वेज स्टेटमेंट का आउटपुट क्या होगा?

#include<stdio.h>
int main(){
int a=10,b=20,*p1=&a,*p2=&b;
printf("Before : **p1=%d **p2=%d",*p1,*p2);
*p1=*p1+*p2;
*p2=*p1-*p2;
*p1=*p1-*p2;
printf("\nAfter : **p1=%d **p2=%d",*p1,*p2);
return 0;
}

\)

Options:

  • Before : **p1=10 **p2=20
    After : **p1=20 **p2=10
  • Before : **p1=20 **p2=10
    After : **p1=10 **p2=20
  • Before : *p1=10 *p2=20
    After : *p1=20 *p2=20
  • Before : p1=10 p2=20
    After : p1=20 p2=10
  • Before : **p1=10 **p2=20
    After : **p1=20 **p2=10
  • Before : **p1=20 **p2=10
    After : **p1=10 **p2=20
  • Before : *p1=10 *p2=20
    After : *p1=20 *p2=20
  • Before : p1=10 p2=20
    After : p1=20 p2=10

Correct Answer: a)

Explanation:

\(Trace of the C code:
1. `a = 10`, `b = 20`. `p1` points to `a`, and `p2` points to `b`. Thus, `*p1 = 10` and `*p2 = 20`.
2. The first `printf` prints the string literal with the values of `*p1` and `*p2`:
`Before : **p1=10 **p2=20`
3. Swapping logic using pointer dereferencing:
– `*p1 = *p1 + *p2;` ⟹ `a = 10 + 20 = 30`
– `*p2 = *p1 – *p2;` ⟹ `b = 30 – 20 = 10`
– `*p1 = *p1 – *p2;` ⟹ `a = 30 – 10 = 20`
After these operations, `*p1` is 20 and `*p2` is 10 (the values of `a` and `b` are swapped).
4. The second `printf` prints:
`\nAfter : **p1=20 **p2=10`\)

Therefore, the correct option is **a)**.

\(C कोड का चरणबद्ध विश्लेषण:
1. `a = 10`, `b = 20`। पॉइंटर `p1` चर `a` का पता रखता है और `p2` चर `b` का। अतः `*p1 = 10` और `*p2 = 20`।
2. पहला `printf` प्रारूपित स्ट्रिंग को प्रिंट करता है:
`Before : **p1=10 **p2=20`
3. बिना तीसरे चर के मानों की अदला-बदली (Swapping):
– `*p1 = *p1 + *p2;` ⟹ `a = 10 + 20 = 30`
– `*p2 = *p1 – *p2;` ⟹ `b = 30 – 20 = 10`
– `*p1 = *p1 – *p2;` ⟹ `a = 30 – 10 = 20`
अब, `*p1` का मान 20 और `*p2` का मान 10 हो जाता है।
4. दूसरा `printf` प्रिंट करता है:
`\nAfter : **p1=20 **p2=10`\)

अतः सही उत्तर विकल्प **a)** है।

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top