c语言,不知道错哪儿了,没有输出,显示结果如最后的图

img

img

img

img

img

不知道你采用的是哪种计算最大公约数的方法,不过这些常用的还是参考一下大佬的算法吧

while (a % b != 0) {//欧几里得算法求最大公约数
        a = a % b;
        b = b % a;
        if (b)//若b不为0
            greatestCommonDivisor = b;
        else {
            greatestCommonDivisor = a;
            break;
        }

int gcd_array(int num[], int size){
    int g,j, max, flag = 1, k;
    max = 0;
    for(k = 0; k < size; k++){
        if (num[k] > max)
        {
            max = k;
        }  
    }

    for (j = num[max]; j >= 0; j --)
    {
        flag = 1;
        for (k = 0; k < size; k++)
        {
            if (num[k] % j != 0)
            {
                flag = 0;
                break;
            }
            
        }

        if (flag == 1)
        {
            g = j;
            break;
        }
        
        
    }
    return g;
}
#include<stdio.h>
int main(){
    int N, num[1000], gcd, i, size;
    scanf("%d", &N);
    size = N;
    for (i = 0; i < N; i++)
    {
        scanf("%d", &num[i]);
    }
    gcd = gcd_array(num, size);
    printf("%d\n", gcd);
    return 0;
}

运行结果:

img