c语言判断等差数列的方法

问题遇到的现象和发生背景

img

用代码块功能插入代码,请勿粘贴截图
#include
#include
#include
int main()
{
    int a[100];
    int temp;
    int flag;
    int n,m;
    int i,j;
    int num;
    scanf("%d", &n);
    for(;n > 0;n--)
    {
        while(scanf("%d", &m) != EOF)
        {
            for(i=0;i < m;i++)
        {
            scanf("%d", &a[i]);
        }
        for(i=0;i < m-1;i++)
        {
            for(j=0;j < m - 1 -i;j++)
            {
                if(a[j] > a[j+1])
                {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }//起泡法排序
        num = a[1] - a[0];
        for(i = 0; i+1 < m;i++)
        {
            if(a[i+1] - a[i] == num)
                flag = 1;
            else 
            {
                flag = 0;
                break;
            }
        }
        if(flag == 1)
            printf("yes\n");
        else if(flag == 0)
            printf("no\n");
        }
        
    }        
}

运行结果及报错内容

运行可以实现部分的数是否为等差数列的判断,但是过不了oj

我的解答思路和尝试过的方法

接手数据,数组储存,冒泡法排序,相邻两个数做差,用循环判断后续是否差值是否相等

我想要达到的结果

了解程序不足在哪