Il programma allo stato attuale è illeggibile, difficile che qualcuno si prenda la briga di cercare di capire cosa fa. Qualche consiglio:
1. indenta il codice
codice:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>

int main()
{
    int n,k,p,c,d,pr,fn,fk,fkn,fkn1,fn1,pow,b,i,cr;
    char a,risp,si,no,ff,fnk,nk,dr,potenza,fnk1;
    printf("Inserisci n");
    scanf("%d",&n);
    printf("Inserisci k");
    scanf("%d",&k);
    if(n>k)
    {
        printf("Quale operazione vuoi effettuare?\n");
        printf("Premi 'p' per calcolare le permutazioni");
        printf("\nPremi 'd' per calcolare le disposizioni");
        printf("\nPremi 'c' per calcolare le combinazioni\n");
        getch ();
        if(a=='p')
        {
            fn=1;
            for(i=1; i<=n; i++)
            {
                fn=i*n;
            }
            printf("vuoi calcolare anche le permutazioni con ripetizioni? si/no");
            scanf("%c",risp);
            if (risp==si)
            {
                fn=1;
                for(i=1; i<=n; i++)
                {
                    fn=i*n;
                }
                "ff";
                pr=fn/ff;
            }

            else if (a=='d')
            {
                fn=i;
                for(i=1; i<=n; i++)
                {
                    fn=i*n;
                }
                fnk=1;
                for(i=1; i<=nk; i++)
                {
                    fnk=i*nk;
                }
                d=fn/fnk;
            }
            printf("vuoi calcolare anche le disposizioni con ripetizione? si/no");
            scanf("%c",risp);
            if (risp==si)
            {
                dr=n*k;
            }
            else if (a=='c')
            {
                fn=1;
                for(i=1; i<=n; i++)
                {
                    fn=i*n;
                }
                fnk=1;
                for(i=1; i<=nk; i++)
                {
                    nk=(i*nk);
                }
                fk=1;
                for(i=1; i<=k; i++)
                {
                    fk=i*k;
                }
                c=fn/(fnk*fk);
            }
            printf("vuoi calcolare anche le combinazioni con ripetizioni? si/no");
            scanf("%c",risp);
            if (risp==si)
            {
                b=n+k-1;
                fnk1=1;
                for(i=1; i<=b; i++)
                {
                    fnk1=i*fnk1;
                }
                fk=1;
                for(i=1; i<=fk; i++)
                {
                    fk=i*fk;
                }
                fn1=1;
                for(i=1; i<=fn1; i++)
                {
                    fn1=i*fn1;
                }
                cr=fnk1/(fk*fn1);
            }
            getch();
        }
    }
}
2. spezzalo in procedure separate;
3. aggiungi commenti;
4. usa nomi sensati per le variabili.