请问这个代码哪里错了呀?(语言-c++)

img

如图1所示,填入1~12的数字。使得每条直线上的数字之和都相同。图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请问这个代码哪里错了呀?


#include<stdio.h>
#include<iostream>
using namespace std;
{
    int a[12];
    int t[6];
    a[1]=1;
    a[2]=8;
    a[12]=3;
    for(a[3]=2;a[3]<=12;a[3]++)
       for(a[4]=2;a[4]<=12;a[4]++)
             for(a[6]=2;a[6]<=12;a[6]++)
                   for(a[7]=2;a[7]<=12;a[7]++)
                   {
                       a[9]=26-8-3-a[6];
                       a[10]=26-3-a[5]-a[7];
                       a[11]=26-1-a[4]-a[7];
                       if(a[i]<=12&&a[i]>=1&&a[1]!=a[2]&&a[2]!=a[3]&&a[3]!=a[4]&&a[4]!=a[5]&&a[5]!=a[6]&&a[7]!=a[8]&&a[9]!=a[10]&&a[10]!=a[11]&&a[11]!=a[12])
                       {
                        printf("%d",a[6])
                       }
                       return 0;
                       }    
}

这个代码有几个问题,

  1. 缺少主函数 int main() 的定义。
  2. if 语句中,您需要检查数组中的所有元素是否都不相等。您可以使用一个函数来实现这个功能。
  3. if 语句中,您需要检查所有的 a[i] 是否在 1 到 12 之间。
  4. printf 语句中,缺少分号。
#include <stdio.h>
#include <iostream>
using namespace std;

bool all_different(int a[], int n) {
    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            if (a[i] == a[j]) {
                return false;
            }
        }
    }
    return true;
}

int main() {
    int a[13];
    int t[6];
    a[1] = 1;
    a[2] = 8;
    a[12] = 3;
    for (a[3] = 2; a[3] <= 12; a[3]++)
        for (a[4] = 2; a[4] <= 12; a[4]++)
            for (a[6] = 2; a[6] <= 12; a[6]++)
                for (a[7] = 2; a[7] <= 12; a[7]++) {
                    a[9] = 26 - 8 - 3 - a[6];
                    a[10] = 26 - 3 - a[5] - a[7];
                    a[11] = 26 - 1 - a[4] - a[7];
                    if (all_different(a, 12)) {
                        printf("%d\n", a[6]);
                    }
                }
    return 0;
}

这个代码可能仍然无法解决问题,因为它没有检查所有的 a[i] 是否在 1 到 12 之间。您需要添加一个额外的函数来检查这个条件。