c++ - 简单程序的错误输出

标签 c++

我开始编写一个非常简单的任务,但我总是得到错误的输出。救救我,我很绝望! 问题是:我必须打印一张 4*10 的表格。表格中的数字从 1 到 40,并且它们是升序的 - 表格如下所示:

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40

我的任务是用数字 2 替换 3 的其他倍数(3、9、15)。每个尚未使用的 5 的倍数都替换为数字 3。其他所有替换为1.

 #include<cstdio>
#include<cstring>


using namespace std;

    int table[10][4];
    int i,j;
    int br;

int main()
{
    br=1;


    for(i=0;i<4;i++)
    for(j=0;j<10;j++)
    {

    if(br%6==3) table[i][j]=2;
    else if(br%5==0 && br%6!=3) table[i][j]=3;
    else table[i][j]=1;


    br++;
    }


    for(i=0;i<4;i++)
    {for(j=0;j<10;j++)
    {
    printf("%d",table[i][j]);
    }
    printf("\n");
    }



return 0;
}

我不断得到的输出:
1121111121
1111211111
2111112131
1121311123

我应该得到的输出:
1121311123
1111211113
2111312113
1121311123

最佳答案

一个问题是,相对于声明数组的方式,您正在反向使用索引:

int table[10][4];

for(i=0;i<4;i++)
for(j=0;j<10;j++)
{
   if(br%6==3) table[i][j]=2;
   else if(br%5==0 && br%6!=3) table[i][j]=3;
   else table[i][j]=1;

查看 for 循环中的 (i) 变量如何设置为 0,1,2,3 以及内部循环中的 (j) 变量如何设置为 (0,1,2,3,.. .,9) ?然后使用表 [i][j] 设置数组中的项目,这意味着您将设置表 [0][0] 到表 [3][9],但您的表声明为表 [10] [4].

解决方案是要么将表声明更改为表[4][10],要么将表[i][j] 的实例更改为表[j][i]。只要您的 for 循环范围与表格的尺寸相匹配,任何一种方法都可以。

关于c++ - 简单程序的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20587756/

相关文章:

c++ - 将 PByte 转换为 Mat OpenCV

c++ - PathCombine 函数无法正常工作

c++ - 加密/解密期间 Crypto++ 显式销毁?

c++ - 创建应用程序可以编辑但用户不能编辑的文件

C++ 替换配置文件中的值

C++禁用特定包含的警告

c++ - 这是糟糕的代码吗?

c++ - std::vector <std::any>返回大小

c++ - 这个字符串赋值有什么问题?

c++ - 使用指针进行选择排序