This is the 3rd of my series of C/C++ puzzles; in case you missed the first 2 they are here: (1) http://codegolf.stackexchange.com/questions/8506/m3ph1st0ss-programming-puzzle-1-c (2) http://codegolf.stackexchange.com/questions/8529/m3ph1st0ss-programming-puzzle-2-c-call-hard I must say that my puzzles are 100% original. If not, I will always state so in the text. My 3rd puzzle has 2 parts as follows: Puzzle 3.1 This part (3.1) is not an original puzzle of mine, it is collected from some internet page I've read a while ago. I use it here as a starting point and a warm-up for you. Solve this one and then move on to the 2nd part. Some one tried to print the "+" sign 20 times and came up with the following program: #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("+"); return 0; } The fact that it did not have the expected result is obvious - the program never ends. Fix it! Easy? Now fix the program by changing ONLY ONE CHARACTER - non-space character of course! For this challenge there are 3 solutions. Find all 3 of them. Just to make it clear: the program must output 20 "+" signs and must end fast. Before criticizing me on what "fast" means, I'll say it means at most a couple of seconds (which by the way is too much but just to make it crystal clear). Puzzle 3.2 When I first saw the puzzle I found it pretty awesome. I did manage to solve it but not immediately since it requires some careful attention. If you are here it means you too solved it. If you did so by writing a program to replace all possible characters with all possible values and test every solution, you are lost. Hard working guy though. Now having corrected the program that writes 20 "+" signs: 3.2.1: Insert **one single letter** and nothing more in the code so that the result is valid and outputs the same thing in all 3 corrected programs. Needless to say, the letter must be before the enclosing } of main (I say that because I don't want to hear people who just put a letter after the program and somehow their compiler was very friendly). 3.2.2: Choose another value to initialize the variable n so that the resulting output will remain the same for at least one of the 3 corrected programs (not necessarily for all of them). **LAST EDIT1**: changing the program so that it outputs 21 "+" signs is still a good solution, as the original text did not say "exactly" 20 signs. However, the infinite output is forbidden. Obviously this doesn't mean let's all start outputting hundreds of "+"signs since it's not forbidden. But eliminating a beautiful 21 output would not be in the spirit of this competition. **LAST EDIT2**: considering LAST EDIT1 it seems that now we have 5 possible solutions, four of which have already been pointed out in the responses. The last challenge however hasn't been touched and I must make it clear once more: **n** must be assigned **another value**, solutions that assign 20 to n by some tricks won't do it (like n=20L). The challenge is to solve both parts of the puzzle. The first one to do it wins. I hope it's all clear, if not please post any questions and I'll edit as quickly as possible. Cheers.