Se no ho provato quasta soluzione:
codice:
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char** argv)
{
    char strnum[10];
    int cont=0;
    int num;
    int rest;
    do{
    printf("Inserisci un numero intero positivo: ");
    scanf("%d",&num);
    fflush(stdin);
    system("cls");
     printf("Il numero %d in base esadecimale e' ",num);
    }
    while(num<0);
    while(num>1){
        rest = num%16;
        switch(rest){
            case 10:
                strnum[cont++]='A';
                break;
            case 11:
                strnum[cont++]='B';
                break;
            case 12:
                strnum[cont++]='C';
                break;
            case 13:
                strnum[cont++]='D';
                break;
            case 14:
                strnum[cont++]='E';
                break;
            case 15:
                strnum[cont++]='F';
                break;
            default:
                strnum[cont++]='0'+rest;
        }
        num/=16;
    }
    while(--cont>=0){
        printf("%c",strnum[cont]);
    }
    printf("\n");
    getchar ();
    return 0;
}