请问这个问题的代码哪里有问题

img

#include<stdio.h>
int main()
{
    int a1,a2,b1,b2,ja,jb,N,ha=0,hb=0,na,nb;
    scanf("%d%d",&ja,&jb);//甲的酒量和乙的酒量
    scanf("%d",&N);//循环行数
    int i,flag=0;
    for(i=0;i<N;i++)
    {
        scanf("%d%d%d%d",&a1,&a2,&b1,&b2);//甲喊 甲划 乙喊 乙划
        if(a2==a1+b1) ja--,ha++;//甲的酒量-1,喝的杯数+1
        if(b2==a1+b1) jb--,hb++;//同上
        if(a2==a1+b1&&b2==a1+b1) ja++,jb++,flag++;//如果甲乙同时输,酒量不变(防止倒下的轮数相同),记录同输的次数
        if(ja==0) na=i;//甲倒下时的轮数
        if(jb==0) nb=i;//乙倒下时的轮数
    }
    if(na<nb) printf("A\n%d\n",hb+ja-flag);
    else printf("B\n%d\n",ha+jb-flag);
return 0;    
}

同时输那行没必要,题目会保证有一个人先倒,可以在循环中判断是否有人倒下了,如果有人倒了,记录此时状态,后面的输入就不做判断了,出循环后输出状态即可


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N;
    int arr[100][4];
    int jia=0, yi=0;
    scanf("%d", &N);
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<4; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    for(int k=0; k<N; k++)
    {
    
            if(arr[k][0]+arr[k][2] == arr[k][1] && arr[k][0]+arr[k][2] != arr[k][3])
            {
                yi++;
            }
            if(arr[k][0]+arr[k][2] != arr[k][1] && arr[k][0]+arr[k][2] == arr[k][3])
            {
                jia++;
            }

    }
    printf("%d %d", jia, yi);
    return 0;
}


输入划拳轮数
输入划拳记录
-记录存数组
判断每轮的正确性
a[0] + a[2]与a[1]和a[3]
记录喝酒杯数