Well, I'm not sure what exactly the problem was. There are a few things I see though. You say you would like to see some 'advanced' techniques. Well, these may not be 'advanced' per-se, but they are a step in the right direction.
First, your array is a fixed size of 100, and you have no check to make sure that the user doesn't enter anything greater than 100! What if the user enters 110, and and after the 100th entry it crashes? A simple if statement can make that disappear:
PHP Code:
if (a_elem >= 100) {
/* Do stuff */
}
Second, if you really don't care about actually 'reversing' the array and then printing it out, you can do it as follows:
PHP Code:
#include <stdio.h>
#include <stdlib.h> /* For malloc */
int main() {
unsigned int numElem; /* Always a positive integer */
int *arr;
int i;
/* Get the Number of Elements */
printf ("Number of elements: ");
scanf("%i", &numElem);
if (numElem == 0) return 0;
/* Make the array */
arr = (int *) malloc (numElem * sizeof(unsigned int));
if (!arr) {
printf ("Unable to make array!\n");
return -1;
}
/* Get each element */
for (i = 0; i < numElem; i++) {
printf ("Element %d: ", i + 1);
scanf ("%d", &arr[i]);
}
/* Print the array */
printf ("Array: ");
for (i = 0; i < numElem; i++) {
printf ("%d ", arr[i]);
}
printf ("\n");
/* Print the 'reversed' array */
printf ("Reversed Array: ");
for (i = numElem - 1; i >= 0; i--) {
printf ("%d ", arr[i]);
}
printf ("\n");
/* Delete the array */
free (arr);
return 0;
}
This is sort of cheating though. This might not be what you want to do if this is a homework assignment to reverse an array.
The program above has some benefits though. First, it uses dynamic array allocation to create the array (100). This puts no stipulations on how many entries the user can enter. The only boundary in this case is the size of the unsigned int (which is more than you'll ever have to deal with, or want to type in by hand

). Second, it uses an unsigned int to make sure the user doesn't enter a negative number. (A negative number in your program would have weird effects).
If the assignment really is to reverse the array, and then print it out (as your comments suggest) you could used a data structure called a Stack to do the reversal for you. I can whip up some code to do this if you would like. I do not post it here since you are using C, and I'd have to do the stack code as well.
The concept behind using a stack (if you understand what a stack is you can skip this paragraph) is that since a stack is a LIFO data structure (Last in First Out: What you put on first will be the last one to come back out, like a stack of plates at a cafeteria) you push all the elements onto a a stack as they come from the user (or put them in an array and then onto the stack) and read them back out of the stack into another array (or same array). The mere process of doing this reverses the array.
If the problem really is for you to reverse an array. I wonder if you can do it in the same array or not. For instance, if you can reverse the array 'in place', you can use the following code to reverse the array:
PHP Code:
/* Please not that numElem is the number of elements in the array, and arr is the array of type int */
for (i = 0; i < numElem / 2; i++) {
int temp = arr[i];
arr[i] = arr[numElem - i - 1];
arr[numElem - i - 1] = temp;
}
This is useful because it cuts the amount of steps to reverse the array in half.
If you really do need to create two arrays: one being one way and then reversing it into another, you don't really have a choice but to do it the long, hard way:
PHP Code:
/* Again, numElem is number of elements, arr is the array of type int, and revArr is the array we want to reverse into*/
for (int i = 0; i < numElem; i++) {
revArr[numElem - 1 - i] = arr[i];
}
I guess the most important thing you could take from this to incorporate into your own program is the dynamic allocation, and maybe that last bit. But now that I have written far more than you ever wanted to know, I'll leave you to ponder it

. Good luck!
-Ted
PS: I am sorry if this either didn't make sense or if I explained stuff too much. Just let me know!