# Change/add only one character and print ‘*’ exactly 20 times

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 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 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 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 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.

This article is attributed to GeeksforGeeks.org

## tags:

C C++ c-puzzle C CPP

code

load comments