我不知道哪里错了Cantor 表问题

现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

1/1 1/2 1/3 1/4 1/5 …

2/1 2/2 2/3 2/4…

3/1 3/2 3/3 …

4/1 4/2 …

5/1 …

我们以 Z 字形给上表的每一项编号。第一项是 1/1,然后是 1/2 2/1 3/1 2/2


#include<stdio.h>
int main()
{
    int i,j,a,b,c=0,n,s;
    scanf("%d",&n);
    for(i=1;s<n;i++)
    {
        s+=i;
    }
    i-=1;
    s=s-i;
    if(i%2==0)
    {
        for(a=i;a>=1;a--)
        {
            c++;
            if(c==n-s)
            {
            printf("%d/%d",i+1-a,a);
            return 0;
        }
        }
    }
    else
    {
        for(a=1;a<=i;a++)
        {
            c++;
            if(c==n-s)
            {
            printf("%d/%d",i+1-a,a);
            return 0;
        }
        }
    }
}

代码哪里错了