我开始编写一个非常简单的任务,但我总是得到错误的输出。救救我,我很绝望! 问题是:我必须打印一张 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/