I tried passing "return avg;" from calculate_avg and I got nothing but errors saying return with a value in function returning void.
This is the compiler telling you you're not doing something correctly. Listen to it and learn. If you read it carefully, it says you are returning a value in a function that is declared to return void, or nothing. You need to tell the compiler your function should return a float value, by declaring it like this:
Code:
float calculate_avg( int *temps, int no_of_temps)
. Then you can safely use "return avg;".

I chose to do that so when I print out my input it will show 1 first, not 0.
That's nice and all, but it's just plain wrong. I told you that in my previous post, and said it was a "major problem", not a suggestion. You can't just have C change the way it indexes arrays, it's from 0..n-1. If you want to print output starting at 1, you're just going to have to deal with writing something like "printf("%d", i+1)" all over. As is, you have basically written buffer overflows into your program simply for output aesthetics. This may not seem like an issue now, but as your programs grow in complexity, you will find yourself tromping all over other values and causing nightmarish problems to debug.

Now, with your latest version, there are still a few kinks to work out:
1. As I mentioned above, you need to change calculate_avg to have a return type of float.
2. You need to fix your array indexes as I mentioned in my previous post. Adjust your output as necessary.
3. You declared main to return an int, but there is no return statement in there. Finish the function with a "return 0;".
4. You need to declare a float variable in main called avg, and assign it the return value of calculate_avg, like so:
Code:
float avg;
...
avg = calculate_avg(...);