Hola TriN, el error está acá:
el mismo programa no va a funcionar bien, porque está esperando un valor numérico y vos en algún momento le ingresas una letra, cosa que no debería ser así, porque la variable temp es un
int, no una string ni un char, por lo tanto no pueden llevar letras dentro de él, sólo números.
Lo que debes hacer es guardar el dato en una variable tipo string o char, luego hacer una comparación si la variable por temp es toda numérica, de ser así, el programa seguiría con normalidad y ahí hacés el cambio de tipo de variables, por ejemplo si la variable temp es un char, entónces pasa de char a int, si la variable temp es una string, entónces pasá de string a int, luego de hacer la comparación si la variable temp es toda numérica, osea si tiene todo números dentro de ella, en el caso que se haya ingresado una letra, la condición no se cumplirá y el programa no dará error, simplemente le informará al usuario que solo ingrese un número de 1 a 100.
Te ayudaría con código, pero no sé las funciones que tiene C, debería haber algo como "isalnum" o "isnum", algo así, o también lo podés hacer creando una función y llamando a ella para que verifique caracter por caracter, para saber si son todos números.
Buena suerte.