【问题标题】:How can I debug this program? [closed]我该如何调试这个程序? [关闭]
【发布时间】:2017-05-18 02:47:47
【问题描述】:

我编写了一些 C 代码,应该使用“转置”函数转置一个 3x3 整数矩阵。但是,代码有问题,但我无法弄清楚。有人可以帮我找出错误吗?

#include <stdio.h>
int a[3][3];

void main()
{
    int i, j;
    void transpose(int x[3][3]);

    printf("Enter a 3x3 matrix:\n");
    for (i = 0; i <= 2; i++)
        ;
    {
        for (j = 0; j <= 2; j++)
            ;
        {
            scanf_s("%d", &a[i][j]);
        }
    }
    printf("The original matrix is:\n");
    for (i = 0; i <= 2; i++)
        printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);
    transpose(a);
    printf("The transposed matrix is:\n");
    for (i = 0; i <= 2; i++)
        printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);
    getchar();
    getchar();
}

void transpose(int x[3][3])
{
    int t;
    t = x[1][0];
    x[1][0] = x[0][1];
    x[0][1] = t;
    t = x[2][0];
    x[2][0] = x[0][2];
    x[0][2] = t;
    t = x[2][1];
    x[2][1] = x[1][2];
    x[1][2] = t;
}

【问题讨论】:

  • 你怎么知道有问题?您是否收到编译器错误或运行时错误?错误是什么?另外,C/C++ 不是一门语言——C 或 C++,选择一个。
  • 不幸的是 - 应用了简单的缩进,一个问题就在我们面前。您的 for 循环不会执行任何操作
  • for (i = 0; i &lt;= 2; i++); --- 这是一个空循环。它没有做三遍。尝试删除分号(此错误出现两次)
  • 您没有收到有关for 循环中分号的编译器警告吗?
  • 旁白:for (i = 0; i &lt;= 2; i++) 使用的幻数不同于用于确定数组维度的幻数。更好的是for (i = 0; i &lt; 3; i++),甚至更好的是3 仅在一个 位置指定,可以使用#defineconst int

标签: c for-loop


【解决方案1】:

在每个 for 循环之后删除半列 (;)。这些是您程序中的空 for 循环。他们不做任何事情就循环。

【讨论】:

  • 这只是众多问题之一
  • 问题解决了!谢谢!
猜你喜欢
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多