C语言程序出错求挑错

img

img

我只得了四十分 帮我看看细节错在哪了

#include 
int main()
{
    int n,m,t,k1;
    scanf("%d %d %d %d",&n,&m,&t,&k1);
    int a[20][20];
    int i,j,k,l;
    for(i=0;i
        for(j=0;j
            scanf("%d",&a[i][j]);
        }
    }
    /*遍历每一个5,i和j来遍历 
    每一个5上下左右判断!=5,对count++
    并记录这个数
    每次比较都与记录区间作比较,
    不一样再count++ 
    在边缘和非边缘分开判断 */ 
    int b[60];
    for(i=0;i<50;i++){
        b[i]=0;
    }
    b[50]=k1;
    int count=0;
    int left,right,on,below;
    int again=0;//1代表重复了 
    for(i=0;i
        for(j=0;j
            if(a[i][j]==k1){
                left=1;
                right=1;
                on=1;
                below=1;
                again=0;
                if(i==0&&j==0){
                    on=0;left=0;
                }else if(i==0&&j==m-1){
                    below=0;left=0;
                }else if(i==n-1&&j==0){
                    on=0;right=0;
                }else if(i==n-1&&j==m-1){
                    below=0;right=0;
                }else if(i==0){
                    on=0;
                }else if(i==n-1){
                    below=0;
                }else if(j==0){
                    left=0;
                }else if(j==m-1){
                    right=0;
                }
                if(a[i][j]!=a[i-1][j]&&on==1){   //上 
        for(k=0;k<=50;k++){
            if(a[i-1][j]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i-1][j];
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i][j-1]&&left==1){  //左 
        for(k=0;k<=50;k++){
            if(a[i][j-1]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i][j]-1;
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i][j+1]&&right==1){  //右 
        for(k=0;k<=50;k++){
            if(a[i][j+1]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i][j+1];
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i+1][j]&&below==1){   //下 
        for(k=0;k<=50;k++){
            if(a[i+1][j]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i+1][j];
                count++;
                
            }else again=0;
    }
            }
        }
    }
    printf("%d",count);
    return 0;
}


```#include 
int main()
{
    int n,m,t,k1;
    scanf("%d %d %d %d",&n,&m,&t,&k1);
    int a[20][20];
    int i,j,k,l;
    for(i=0;i
        for(j=0;j
            scanf("%d",&a[i][j]);
        }
    }
    /*遍历每一个5,i和j来遍历 
    每一个5上下左右判断!=5,对count++
    并记录这个数
    每次比较都与记录区间作比较,
    不一样再count++ 
    在边缘和非边缘分开判断 */ 
    int b[50];
    for(i=0;i<50;i++){
        b[i]=0;
    }
    b[50]=k1;
    int count=0;
    int left,right,on,below;
    int again=0;//1代表重复了 
    for(i=0;i
        for(j=0;j
            if(a[i][j]==k1){
                left=1;
                right=1;
                on=1;
                below=1;
                again=0;
                if(i==0&&j==0){
                    on=0;left=0;
                }else if(i==0&&j==m-1){
                    below=0;left=0;
                }else if(i==n-1&&j==0){
                    on=0;right=0;
                }else if(i==n-1&&j==m-1){
                    below=0;right=0;
                }else if(i==0){
                    on=0;
                }else if(i==n-1){
                    below=0;
                }else if(j==0){
                    left=0;
                }else if(j==m-1){
                    right=0;
                }
                if(a[i][j]!=a[i-1][j]&&on==1){   //上 
        for(k=0;k<=50;k++){
            if(a[i-1][j]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i-1][j];
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i][j-1]&&left==1){  //左 
        for(k=0;k<=50;k++){
            if(a[i][j-1]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i][j]-1;
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i][j+1]&&right==1){  //右 
        for(k=0;k<=50;k++){
            if(a[i][j+1]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i][j+1];
                count++;
                
            }else again=0;
    }else if(a[i][j]!=a[i+1][j]&&below==1){   //下 
        for(k=0;k<=50;k++){
            if(a[i+1][j]==b[k]){
                again=1;
                break;
            }
            
        }
        if(again==0){
                b[count]=a[i+1][j];
                count++;
                
            }else again=0;
    }
            }
        }
    }
    printf("%d",count);
    return 0;
}
}

#include<stdio.h>//xiang lin qu yu
int main()
{
    int n,m,t,k;
    int i,j;
    int a[25][25];
    int b[2400]={0};
    int p=0;
    scanf("%d %d %d %d",&n,&m,&t,&k);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            //p++;
            if(a[i][j]==k)
            {
                if(a[i-1][j]!=k)
                {b[p]=a[i-1][j];  p++;}
                if(a[i+1][j]!=k)
                {b[p]=a[i+1][j];  p++; }
                if(a[i][j-1]!=k)
                {b[p]=a[i][j-1];  p++; }
                if(a[i][j+1]!=k)
                {b[p]=a[i][j+1];  p++; }    
                
            }
            
            
        }
    }
    
//    printf("%d\n",p);
    
    int count=0;
    for(i=1;i<=t;i++)
    {
        for(j=0;j<=2400;j++)
        {
            if(b[j]==i&&b[j]!=k)
            {
                count++;
            //    printf("%d\n",b[j]);
                break;
            }    
        }
    }
    printf("%d",count);
    
    
    return 0;
}