C语言课上LS给的程序有错,应该怎么改呢?

#include<stdio.h>
long int fib(int n)
{
long int f;
if(n==1 || n==2)
f=1;
else;
f=fib(n-1)+fib(n-2);
return(f);
}
void mian()
{
int i;
for(i=1;i<=20;i++)
{
printf("%101",fib(i));
if(i%4==0)
cout << endl;
}
printf("\n");
}

修改见注释,供参考:

#include<stdio.h>
long int fib(int n)
{
    long int f;
    if (n == 1 || n == 2)
        f = 1;
    else    //; 这里多了 ';' 分号
        f = fib(n - 1) + fib(n - 2);
    return (f);
}
void main()  //mian()  修改
{
    int i;
    for (i = 1; i <= 20; i++)
    {
        printf("%10ld", fib(i));//printf("%101", fib(i)); 修改
        if (i % 4 == 0)
            printf("\n");       //cout << endl;  修改
    }
    printf("\n");
}

printf("%101",fib(i));这行对吗?
cout << endl;这行怎么改成printf呢?

修改的点给你标在代码中了:

#include<stdio.h>
long int fib(int n)
{
    long int f;
    if(n == 1 || n == 2)
        f = 1;
    else       //去掉分号
        f = fib(n - 1) + fib(n - 2);
    return f;
}
void main()                //mian改成main
{
    int i;
    for (i = 1; i <= 20; i++)
    {
        printf("%d\t", fib(i));        //改成 %d\t
        if (i % 4 == 0)
            printf("\n");            //改成printf("\n");
    }
    printf("\n");
}

printf("%101",fib(i));这行是不对的,应该是 printf("%d",fib(i));
cout << endl是C++ 的写法,就是换一个行,在C语言中报错 替换成printf("\n");

#include<stdio.h>
long int fib(int n)
{
    long int f;
    if (n == 1 || n == 2)
        f = 1;
    else;         //这个也是错误的    不应该有分号
    f = fib(n - 1) + fib(n - 2);
    return(f);
}
void main()  // 改成main
{
    int i;
    for (i = 1; i <= 20; i++)
    {
        printf("%101", fib(i));  //这个101是不对的,改成 %ld
        if (i % 4 == 0)
        {
            printf("\n");  //换行
        }
    }
    printf("\n");
}