初学c++数组与循环有关问题求解!

初学c++数组与循环问题求解!!!!!
这是我的源代码:
#include <iostream>


using namespace std;
int main() {
short n, a, b, i, p;
cin >> n;
short char1[n];
short char2[n];

for (i = 0; i < n; i++)
cin >> a >> b;
char1[i] = a;
char2[i] = b;
for (p = 0; p < n; p++)


if (b == 0)
cout << char1[p]  << " " << 0 << " " << char1[p] << " " << -1 <<" " << -1 << endl;
else
cout << char1[p] + char2[p] << " " << char1[p] * char2[p] << " " << char1[p] - char2[p] << " " << char1[p] / char2[p] << " " << char1[p] % char2[p] << endl;

}
目的就是编写程序输入两个数a, b,计算它们的和、积、差、商(整除)、余数。如果除数是0,则商和余数输出-1。
虽然编译成功了,但是结果却完全不对
比如我把n设为1,a,b的值都设为1,输出的是-1101 304704 0 1 0 
并且无论输入什么值最后三个都是0 1 0

大神们帮帮我吧~~~~
------解决思路----------------------
没实际编译链接调试,不保证对。仅供参考:
#include <iostream>
using namespace std;
int main() {
    short n, a, b, i, p;
    cin >> n;
    short *char1=new short[n];
    short *char2=new short[n];

    for (i = 0; i < n; i++) {
        cin >> a >> b;
        char1[i] = a;
        char2[i] = b;
    }
    for (p = 0; p < n; p++) {
        if (char2[p] == 0) {
            cout << char1[p]  << " " << 0 << " " << char1[p] << " " << -1 <<" " << -1 << endl;
        } else {
            cout << char1[p] + char2[p] << " " << char1[p] * char2[p] << " " << char1[p] - char2[p] << " " << char1[p] / char2[p] << " " << char1[p] % char2[p] << endl;
        }
    }
    delete[] char1;
    delete[] char2;
    return 0;
}