我开始编写一个非常简单的任务但是我一直得到错误的输出。帮助我,我很绝望! 问题是:我必须打印一张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个
答案 0 :(得分:1)
您以错误的顺序访问数组。而不是
table[i][j];
你应该写
table[j][i];
每次访问您的表时,i
表示您的行和j
您的列(只要您一致地命名它们)。
或者在表声明中交换索引,即
int table[4][10];
而不是
int table[10][4];
答案 1 :(得分:1)
一个问题是你在索引数组的方式上向后使用索引:
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)变量设置为go(0,1,2,3,.. 。,9)?然后使用table [i] [j]在数组中设置项目,这意味着您将通过表[3] [9]设置表[0] [0],但您的表被声明为表[10] [4]。
解决方案是将表声明更改为table [4] [10],或者将table [i] [j]的实例更改为table [j] [i]。只要您的for循环范围与表的尺寸匹配,任何一种方法都可以使用。