乘法口诀数列执行出一个很大的负数

img



#include <iostream>
using namespace std;
int main(){
    int a1,a2,n,a[1000];
    cin>>a1>>a2>>n;
    for(int i=0;i<n;i++){
        a[0]=a1;
        a[1]=a2;
        a[i+2]=a[i]*a[i+1];
        if(a[i+2]>=10){
            a[i+3]=a[i+2]%10;
            a[i+2]=a[i+2]/10;
        }
  if(i=n-1){
   cout<<a[i];
  }
  else{
   cout<<a[i]<<" ";
  }
 }
 return 0;
}

为什么执行出的结果是一个很大的负数呢?求解


#include<bits/stdc++.h>
using namespace std;
 
int main() {
    int d,b,n;
    cin>>d>>b>>n;
    int a[n];
    a[0]=d;
    a[1]=b;
    int i=2;
    int j=2;
    while(i<n) {
        int x=a[j-1]*a[j-2];
        if(x<10) {
            a[i++]=x;
        } else if(x>9&&x<100) {
            a[i++]=x/10;
            a[i++]=x%10;
        }
        j++;
    }
    for(int k=0; k<n; k++) {
        if(k)
            cout<<" ";
        cout<<a[k];
    }
    return 0;
}