我正在制作一个显示乘法表的程序,用户提示行数和列数,此程序显示表但列数和行数应该相同,如果我输入不同的数字,则出错发生。
#include <iostream>
using namespace std;
int main()
{
int r,c;
cout<<"How many rows?: ";
cin>>r;
cout<<"How many Columns?: ";
cin>>c;
int table[r][c];
//assigns each element
for (int i = 1; i <= r; i++)
{
for (int j = 1; j <= c; j++)
{
table[i][j] = i * j;
}
}
//prints the table
for (int i = 1; i <= r; i++)
{
for (int j = 1; j <= c; j++)
{
cout << table[i][j] << '\t';
}
}
system("pause");
return 0;
}
答案 0 :(得分:1)
数组从索引0
开始,如果数组大小为r
arr[r]
,则访问非法。所以你需要这样做:
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
table[i][j] = i * j;
}
}
//prints the table
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
cout << table[i][j] << '\t';
}
}
答案 1 :(得分:0)
嗨Jonathan Potter说数组在C / C ++中从0开始。加:
int r,c;
cout<<"How many rows?: ";
cin>>r;
cout<<"How many Columns?: ";
cin>>c;
int table[r][c];
你应该避免一种非常糟糕的做法。实际上,您使用非静态变量创建表。
此问题已经回答here