简单程序的错误输出
wrong output for simple program
我开始编写一个非常简单的任务,但我一直得到错误的输出。帮帮我,我绝望了!问题是:我必须打印一张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)的?然后使用table[i][j]设置数组中的项,这意味着您将通过table[3][9]设置table[0][0],但您的表声明为table[10][4]。
解决方案是将表声明更改为表[4][10],或者将表[i][j]的实例更改为表[j][i]。只要for循环范围与表的维度匹配,任何一种方式都可以。
您以错误的顺序访问数组。代替
table[i][j];
你应该写
table[j][i];
每当访问您的表时,i
表示您的行,j
表示您的列(只要您一致地命名它们)。
或者交换表声明中的索引,即
int table[4][10];
而不是
int table[10][4];
然后输出正确。
相关文章:
- 输出错误,问题是找到总和5000位数字cpp
- 使用复制构造函数的程序输出错误
- 异或字符串加密/解密输出错误
- 在linux上使用g++输出错误,在windows上更正
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- ECDSA 密钥对生成输出错误
- fscanf() 输出错误的值
- 输入 1024 后十进制到二进制转换的输出错误?
- 输出错误命令的条件语句
- cuSparse (cusparseDcsrgemm) 中的矩阵乘法输出错误的结果
- 为什么 du -sh 输出错误大小的内存映射文件
- VS2017 的输出错误,但 mingw 有效
- 如何使FFMPEG C 代码不输出错误消息
- 乘以时输出错误.这是我编译器中的错误吗?C
- 输出错误:两个不同编译器上的不同输出:Prime Cryptarithm USACO
- 为什么输出错误崩溃
- C++输入/输出错误
- 尝试用 c++ 制作一个简单的加法器.编译成功,但输出错误
- 当我使用此合并排序代码运行时,输出错误
- 递归功能输出错误的值