#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color f0");
int k,i,j,n;
printf("Generate tables upto:");
scanf("%d",&n);
int tables[n][10];
printf("Table\t");
for(k=1;k<=10;k++)
{
printf("%dx\t",k);
}
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=10;j++)
{
tables[i][j]=i*j;
printf("%d\t",tables[i][j]);
}
}
return 0;
}
这是我正在处理的代码,但不幸的是我无法按照我想要的方式生成它。 所需的输出应该看起来像this。
答案 0 :(得分:1)
数组索引从0
开始,最多为n-1
。所以你访问的界限是undefined behaviour。
所以你需要将循环重写为:
for(i=0; i < n; i++) {
for(j=0; j < 10; j++) {
tables[i][j] = (i+1)*(j+1);
printf("%d\t", tables[i][j]);
}
}
答案 1 :(得分:1)
您的代码的提案修复
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color f0");
int k,i,j,n;
printf("Generate tables upto:");
scanf("%d",&n);
int tables[n][10];
printf("Table\t");
for(k=1;k<=10;k++)
{
printf("%dx\t",k);
}
printf("\n");
for(i=2;i<=n;i++)
{
printf("%d\t",i);
for(j=1;j<=10;j++)
{
tables[i-1][j-1]=i*j;
printf("%d\t",tables[i-1][j-1]);
}
printf("\n");
}
return 0;
}
以n=4
Generate tables upto:4
Table 1x 2x 3x 4x 5x 6x 7x 8x 9x 10x
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40