各位能帮我看一下我的c++代码为什么超时了吗!

刚开始学c++,
做到这一题时发现超时了。
自己测试的时候运行很长一段时间,
最后还是没有出答案。
看了很久没看出原因,
百度上也没有找到,
请问各位能帮我看一下我的c++代码为什么超时了吗?
题:
给定一个 整数n,输出这个数的位数和数位累加和。

输入格式
一个整数。

输出格式
第一行一个整数表示其位数 第二行一个整数表示其各个数位累加和。

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,a[10],digit,answer[11],endanswer=0;
    cin>>n;
    a[1]=10;
    for(int i=1;n/a[i]!=0;){
        for(answer[i]=n%a[i];answer[i]>=10;){
            answer[i]/=10;
        }
        endanswer+=answer[i];
        i++;
        a[i]*=10;
        digit=i;
    }
    for(answer[10]=n/10;answer[10]>=10;){
        answer[10]=n/10;
    }
    endanswer+=answer[10];
    cout<<digit<<endl<<endanswer;
    return 0;
    
}



题主考虑的太复杂了,修改如下,供参考:

#include<iostream>
//#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,a[10],digit=0,answer[11],endanswer=0;
    cin>>n;
    while(n){
            endanswer += n%10;
            digit++;
            n /= 10;
    }
    //a[1]=10;
    //for(int i=1;n/a[i]!=0;){
    //    for(answer[i]=n%a[i];answer[i]>=10;){
    //        answer[i]/=10;
    //    }
    //    endanswer+=answer[i];
    //    i++;
    //    a[i]*=10;
    //    digit=i;
    //}
    //for(answer[10]=n/10;answer[10]>=10;){
    //    answer[10]=n/10;
    //}
    //endanswer+=answer[10];
    cout<<digit<<endl<<endanswer;
    
    return 0;
}

注意第7行,n/a[i]会因为除数为0产生异常,因为你第13行没啥用,a没进行初始化,所以a中的值都是编译器自己默认的,有可能是0,也有可能是随机的数字