Temperature Converter
Python 3, 118 116 bytes
I=input()
t=eval(I[:-1])
u=ord(I[-1])%7
exec("u=-~u%3;t=[t*1.8-459.67,(t-32)/1.8,t+273.15][u];print(t,'FCK'[u]);"*2)
Performs the conversions in a rotary order K -> F -> C -> K
twice.
CJam, 77 65 60 59 55 54 52 bytes
l~2|"459.67+1.8/'K 273.15-'C 1.8*32+'F"S/m<{~N2$}%6<
Try it online in the CJam interpreter.
How it works
l~ e# Read and evaluate the input: F, K, C -> 15, 20, 12
2| e# Bitwise OR with 2: F, K, C -> 15, 22, 14 = 0, 1, 2 (mod 3)
"459.67+1.8/'K 273.15-'C 1.8*32+'F"S/
e# Push ["459.67+1.8/K" "273.15-C" "1.8*32+F"].
e# These commands convert from F to K, K to C and C to F.
m< e# Rotate the array of commands by 15, 22 or 14 units to the left.
{ e# For each command:
~ e# Execute it.
N e# Push a linefeed.
2$ e# Copy the temperature for the next iteration.
}% e# Collect all results in an array.
6< e# Keep only the first 8 elements.
JavaScript (ES6), 127 130 132 bytes
Waiting for some amazing esolanguage answer, I did not find much to golf here.
Using template string, the 3 newlines are significant and counted.
Run snippet in Firefox to test.
F=x=>([t,u]=x.split(' '),z=273.15,y=9/5,u<'F'?`${t*y+32} F
${+t+z} K`:u<'K'?`${t=(t-32)/y} C
${t+z} K`:`${t-=z} C
${t*y+32} F`)
// Predefined tests
;['23 C','86.987 F','56.99999999 K']
.forEach(v=>O.innerHTML += v+' ->\n'+F(v)+'\n\n')
<input id=I><button onclick='O.innerHTML=F(I.value)'>-></button><br>
<pre id=O></pre>