Puedes optimizar el código eliminando la variable "resta". No la necesitas.
No recuerdo como se llamaba la función valor absoluto (devuelve el número sin signo), ni si esta era nativa del lenguaje o si necesitaba alguna librería. Si puedes usarla puedes optimizar todavía más el código.
Por ejemplo, si la función es abs(número), el código sería:
#include<stdio.h>
main() {
int a,b,k,suma;
suma=0;
printf("Introdueixi el valor k, que sera la diferencia entre numeros");
scanf( "%i",&k );
printf("Introdueixi la sequencia de numeros");
scanf( "%i",&a );
while( a != 0 ) {
scanf("%i",&b);
if (abs(a-b)==k) { suma=suma+1 }
scanf( "%i",&a )
}
printf("Hi han %i restes possibles que donen com a resultat %i \n", suma, k );
}
Si no puedes usar valor absoluto , sustituye la comparación (abs(a-b)==k) por ((a-b==k) || (a-b==-k)). Será más eficiente que las comparaciones if.
Además, en tu código …
1. te sobra el ; detrás del paréntesis del while. El ; se pone después de la instrucción.
2. te falta un scanf para la variable a dentro del while. Si no lo pones será un bucle infinito.</stdio.h>