e555666ee 2023-06-13 19:19 采纳率: 37.5%
浏览 14
已结题

请问这个代码哪里错了呀?(语言-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;
                       }    
}
  • 写回答

2条回答 默认 最新

  • BG5 2023-06-13 20:44
    关注

    这个代码有几个问题,

    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 之间。您需要添加一个额外的函数来检查这个条件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月22日
  • 已采纳回答 6月14日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢