You can get a whole bunch of functions like this (and some with even worse properties!) by inspecting the decimal representation of a number. To make sure these functions are well defined, we'll consider the decimal expansion of a terminating decimal to always end with $00...$ rather than the other possibility of ending in $99...$. The condition of continuity at non-terminating decimals $x$ means precisely that, for any bound $\varepsilon$, there is some $N$ such that every number $x'$ with the same first $N$ digits as $x$ has $f(x)-f(x') < \varepsilon$ (and, indeed, if $f(x)$ was also non-terminating, we can replace the $\varepsilon$ by a similar condition of agreement of digits). The case where $x$ is a terminating decimal is slightly different and annoying, so I won't talk about it.
As a starter, we can define a function $f(x)$ that writes $x$ in decimal, then counts how many $9$'s it has. If the count is finite, $f(x)$ is the count. If the count is infinite, $f(x)=-1$. This is discontinuous everywhere because knowing that $x$ and $x'$ share $N$ digits for any $N$ can, at best, tell you that they share some finite number of $9$'s - but the function takes into account every $9$ and we have no control after some point in the decimal expansion.
We can make the previous example somewhat worse by choosing a bijection $k:\{-1,0,1,2,\ldots\}\rightarrow \mathbb Q$ and then considering $k\circ f$ which now, one can check, has the property that the image of any open set is dense in $\mathbb R$. That's not very continuous at all!
Another fun example, along a similar line, would be to define $f(x)$ to be the number of places after the decimal point that the last $9$ in the representation of $x$ appears - or $-1$ if there are infinitely many $9$'s. You could even do worse and let $f(x)$ be the $-1$ if there are infinitely many $9$'s. If there is a last $9$, erase all the digits prior to it, leaving an infinite sequence of digits in $\{0,1,\ldots,8\}$. Write $0.$ before this sequence and interpret it in base $9$. Now, the image of every open set is $[0,1]$. That's pretty nasty. If you choose a bijection between $[0,1]$ and $\mathbb R$, now the image of every open set is $\mathbb R$.
There's also some examples that people actually do care about. For instance, there's a thing called irrationality measure which basically asks "How hard is this number to approximate by rationals?" The irrationality measure of $x$ is defined as the infimum of the $\mu$ such that
$0 < \left|x - \frac{p}q \right| < \frac{1}{q^{\mu}}$
for infinitely many coprime pairs of integers $(p,q)$. This might be infinite, but you can always fix it up by mapping $\infty$ to some real number. This is $1$ at every rational, $2$ at algebraic irrationals, and can be anything at least $2$ elsewhere. This is actually useful as a tool for showing that things like that are like Liouville numbers (but not quite as extreme) are irrational - but the image of every open set is $\{1\}\cup [2,\infty]$, so a pretty nasty function.
Also: bonus, if you take any continuous function and add it to any discontinuous everywhere function, you get a discontinuous everywhere function - and if you take a discontinuous everywhere function and multiply it by a non-zero constant, it is still discontinuous everywhere. It turns out that, in the grand scheme of things, if you choose a function at random, the probability that it is continuous is $0$ - it's like randomly choosing a point on a plane and hoping that it lies on a line, except that instead of a "plane" you have an infinite dimensional space which is way bigger than the line.