First off, will all due respect, ignore Jonathan's advice. You DO need to have a positive value for the ARRAY variable, equal to the length of the array, but otherwise your "for" loop is absolutely correct.
But I do notice two problems.
It looks to me like you're confusing the INDEX of the smallest integer with the VALUE of the smallest integer. to wit:
if (x(i] < small)
small = i;
So, the first time into loop, i==0, and no matter what x[i], you set "small" to "i", so now "small" is 0.
So, for the rest of the loop, small == 0, and won't change unless you have a negative number in your array. If your array consists of all positive integers, "small" will always end up as 0.
What you need is an another variable. Keep one for the smallest value you've seen so far, and the other one for the loop index where that value was found.
Secondly, after you're through looping, you print your loop index variable, "i". Whatever for? BY DEFINITION, that variable should equal the value in ARRAY after going through the entire loop.
And, a minor nit -- you define "large" -- why? You certainly never use it.
In conclusion:
Set ARRAY equal to the actual length of the array.
Set a variable for the VALUE of the smallest integer seen so far (set to x[i])
Set a variable for the INDEX where that integer was seen (set to i)
When completed, print the index of the smallest integer (NOT i)