Lemma: Assume $p>1.$ Let $c\in \mathbb R.$ Then there exists a sequence $f_n\in L^1\cap L^p$ such that $\int f_n = c$ for all $n,$ and $\|f_n\|_p \to 0.$
Let's assume the lemma. Let $f\in L^1\cap L^p$ and put $c= - \int f.$ By the lemma, there are $f_n \in L^1\cap L^p$ such that $\int(f+f_n) = 0$ for all $n,$ with $\|f_n\|_p \to 0.$ Then $f+f_n \to f$ in $L^p,$ so we're done in the case $f\in L^1\cap L^p.$ Because $L^1\cap L^p$ is dense in $L^p,$ we've also proved the general result.
I'll leave the proof of the lemma to you for now.
Second question: Here we work on $[0,1].$ The answer is no. Let $f\equiv 1.$ Suppose there are $f_n\in L^1\cap L^p$ with $\int f_n = 0$ such that $f_n \to f$ in $L^p.$ Because convergence in $L^p$ implies convergence in $L^1$ on sets of finite measure (by Holder), we then have $0 = \int f_n \to \int f =1,$ contradiction.