C语言中的魔术矩阵问题,寻找解决方案

发布于 科技 2024-08-09
14个回答
  1. 匿名用户2024-01-31

    程序有问题,在初始化矩阵的时候,有一些问题,因为是二维矩阵,所以需要用两个循环来控制行和列... 具体步骤如下。

    #include

    void main()

    int i,j,t,a[5][5];

    t = 1;

    for(i=0;i<5;i++)

    for(j=0;j<5;j++)

    a[i][j] = t++;

    for(i=0;i<=4;i++)

    for(j=0;j<=4;j++)

    printf("%5d",a[i][j]);

    printf("");

  2. 匿名用户2024-01-30

    按照 Robe 的方法填写奇阶魔方需要确定该位置是否已经填写,而您的程序中没有这样的部分。

    这是修改后的程序:

    #include

    void main()

    int i, j, t, a[5][5];

    int rightup_i, rightup_j;

    所有数字都需要归零,以确定是否将数字 * 放在 (i=0; i<5; i++)

    for (j=0; j<5; j++)

    a[i][j] = 0;

    i = 0; j = 5/2;

    for(t=1;t<=5*5;t++)

    a[i][j]=t;

    计算右上方块的坐标 *

    rightup_i = i - 1;

    rightup_j = j + 1;

    if(rightup_i<0)

    rightup_i=4;

    if(rightup_j>4)

    rightup_j=0;

    如果右上角没有数字,则为下次填写的位置 * if(a[rightup i][rightup j] == 0)i = rightup i;

    j = rightup_j;

    else * 如果已经填好了,下次会填到下一个框 * i++; if(i > 4)

    i = 0;

    for(i=0;i<5;i++)

    for(j=0;j<5;j++)

    printf("%5d",a[i][j]);

    printf("");要换行运行结果,请执行以下操作:

  3. 匿名用户2024-01-29

    #include

    #include

    #define n 5

    int main(void)

    int i, j, key;

    int square[n+1][n+1] = ;

    i = 0;

    j = (n+1) / 2;

    for(key = 1; key <= n*n; key++)if((key % n) == 1)

    i++;else

    i--;j++;

    if(i == 0)

    i = n;

    if(j > n)

    j = 1;

    square[i][j] = key; }for(i = 1; i <= n; i++)for(j = 1; j <= n; j++)printf("%2d ", square[i][j]);

    return 0;

    魔方的填写方法最简单,用奇数,把第一个数字放在第一行的第一列**,然后填到右边(左),如果右边(左)有数字,则填下,如下图所示:

  4. 匿名用户2024-01-28

    这个程序至少有两个问题(可能还有其他错误,我会再看一遍),第一个if(m=1)应该是m==1,行数是1,直接返回。

    第二个问题,循环嵌套不正确,以下正确**,注意支撑位置。

    for (i = 0; i

  5. 匿名用户2024-01-27

    我不明白。 但是if(m=1)显然应该是if(m==1)。

  6. 匿名用户2024-01-26

    循环 A34 的第一个双精度被替换为 AIJ

  7. 匿名用户2024-01-25

    带中断写入,设置优先级。

  8. 匿名用户2024-01-24

    你写的 fun 函数有一个返回值,你只需给函数添加 return,调用它的时候还需要对返回值进行处理。

  9. 匿名用户2024-01-23

    我用一个二维数组保存了一下,发给房东参考。

    #include

    #define max 10

    void fun(int a[max],int x )fflush(stdin);

    int main()

    elsefor( i = 0 ; i < num ;i++)reutn 0;}

  10. 匿名用户2024-01-22

    运行 cpucash 的算法。 我发现还是有点问题。 在上面更改了它。 解决了点逻辑问题。 运行结果正确。

    #include

    int main(void)

    必须初始化最终结果。

    int i,n;

    char op='+';

    scanf("%d",&n);

    while(op!='#'这个地方变了};for(i=1;i<=n*n;i++) 输出。

    return 0;}

  11. 匿名用户2024-01-21

    matrix,那么就需要用一个二维数组,你可以用一个一比特数组,但是你需要确定如何把它拆分成一个二维数组。

    n*n=10*10=100,你可以定义一个100个元素的数组,但是对于这个问题,我估计你需要定义一个二维数组,呵呵,int a[100],sum[100]=; 必须初始化最终结果。

    int i,n;

    char op;

    scanf("%",&n);

    至少做一次,最好是 while(op!) 和 do--while='#

    for(i=0;i

  12. 匿名用户2024-01-20

    i != n 显然是错误的,应该与 i 一起使用!= n-1

    j !=n 类似。

    当然,要更改为 &&,这取决于您的需要,因为“除了子对角线的最后一列和最后一行”仍然模棱两可)。

  13. 匿名用户2024-01-19

    #include

    using namespace std;

    #define type int

    #define num 3

    type matrix1[num][num], matrix2[num][num];

    void fun()

    int i,j;

    for(i = 0; i < num; i ++for(j = 0; j <= num; j++)matrix2[j][i] = matrix1[i][j];

    void init()

    int i,j;

    for(i = 0; i < num; i ++for(j = 0; j < num; j++)cout <<"请进入部分"

    void output(int matrix[num])int i,j;

    for(i = 0; i < num; i ++for(j = 0; j < num; j++)cout

    求 3*3 矩阵的逆矩阵。

    init();

    cout <<"matrix1 是:"

    fun();

    cout <<"matrix2 是:"

  14. 匿名用户2024-01-18

    我真的不明白你这个问题是什么意思,你能解释得更清楚吗?

相关回答
8个回答2024-08-09

将 struct、student 和 internal 元素定义为 age、num 数组。 >>>More

3个回答2024-08-09

总结。 吻。 <>

<>运行的结果如下: a c e g i k m o q s 程序的逻辑如下:外循环变量 i 表示图的行数,4 个周期后即可输出完整的图; 内循环变量 j 表示每行输出的字符数,其初始值为 0,每输出个字符 j 加 1; 变量 k 表示每行第一个字符的 ASCII 码值与“a”的差值,初始值为 1,每个字符输出的 K 也加 1; 输出每行后,需要将变量 ch 回滚到下一行的第一个字符位置,即减去 2k-1。 >>>More

13个回答2024-08-09

让我举个例子。

int a() >>>More

9个回答2024-08-09

#include

int** transpose(int** a,int row,int col) >>>More

5个回答2024-08-09

1 x=15,i=2

2 (1) 在 while() 循环前添加 s=0; 陈述。 >>>More