In the below code, change/add only one character and print ‘*’ exactly 20 times.
int main() { int i, n = 20; for (i = 0; i < n; i--) printf("*"); getchar(); return 0; }
Solutions:
1. Replace i by n in for loop’s third expression
C
#include <stdio.h> int main() { int i, n = 20; for (i = 0; i < n; n--) printf ( "*" ); getchar (); return 0; } |
Java
// Java code class GfG { public static void main(String[] args) { int i, n = 20 ; for (i = 0 ; i < n; n--) System.out.print( "*" ); } } |
2. Put ‘-‘ before i in for loop’s second expression
#include <stdio.h> int main() { int i, n = 20; for (i = 0; -i < n; i--) printf ( "*" ); getchar (); return 0; } |
3. Replace < by + in for loop's second expression
#include <stdio.h> int main() { int i, n = 20; for (i = 0; i + n; i--) printf ( "*" ); getchar (); return 0; } |
Let’s extend the problem little.
Change/add only one character and print ‘*’ exactly 21 times.
Solution: Put negation operator before i in for loop’s second expression.
Explanation: Negation operator converts the number into its one’s complement.
No. One's complement 0 (00000..00) -1 (1111..11) -1 (11..1111) 0 (00..0000) -2 (11..1110) 1 (00..0001) -3 (11..1101) 2 (00..0010) ............................................... -20 (11..01100) 19 (00..10011)
#include <stdio.h> int main() { int i, n = 20; for (i = 0; ~i < n; i--) printf ( "*" ); getchar (); return 0; } |
Please comment if you find more solutions of above problems.
leave a comment
0 Comments