Two main areas for you to look at:
First, the denominator in your estimation of the standard deviation of the population, which has to be based on the sample. As you only have a sample, you have used a degree of freedom when you estimated the mean and hence @Karim is right in this case that you want (n-1) rather than n.
Your question C has a more fundamental problem. To create a confidence interval you need the standard deviation of the estimate of the mean, often (annoyingly, to me) called the "standard error". This is not the same as the standard deviation of the population and gets smaller as the sample size gets larger. You probably have a formula for this somewhere...
Secondarily with regard to your question C - you have a small sample size, and you are estimating the variance of the mean from your population. This means that your estimate of the mean has a t distribution rather than a Normal distribution.
For the record, here is how I recreated your results with the errors hinted at above:
> labs <- c(16,46,34,31,21,26,22)
> n<- length(labs)
> labs.s.wrong <- sqrt(sum((labs-mean(labs))^2)/n) # wrong denominator
> labs.s.wrong
[1] 9.273618
> mean(labs) + qnorm(c(0.025,0.975))* labs.s.wrong # wrong distribution; wrong standard error
[1] 9.824042 46.175958
One correct series of calculations in R
would instead proceed like this:
labs <- c(16,46,34,31,21,26,22)
s <- sd(labs); m <- mean(labs); n <- length(labs) # The statistics
confidence <- 0.95
z <- qt(1 - (1-confidence)/2, n - 1) # Student t quantile
m + c(-1,1) * z * s / sqrt(n) # Confidence limits
The output is
[1] 18.73614 37.26386
To answer the last question (d), re-express the weights as multiples of the standard deviation away from the mean (that is, as standardized weights):
> print(sort((labs - m)/s), digits=2)
[1] -1.2 -0.7 -0.6 -0.2 0.3 0.6 1.8
None of these values is surprising: from the 68-95-99.7% rule of thumb, we expect 68% of the data (around four or five of the weights) to have standardized values between $-1$ and $1$ (and five of them do) while 95% of the data (most likely all of them) would have standardized values between $-2$ and $2$ (and all of them do). There is no evidence that any of the weights is unusually high or low relative to the set of seven weights.