求解,用这个代码计算1+22+333+4444+...的前n项的值(n<10)是否出错了,应该怎么改

#include <stdio.h>
#include <math.h>
int main()
{
int i,j,n;
long temp,sum=0;
printf("Please input terms numbers.");
scanf("%d",&n);
while(n<1||n>10)
{
printf("Enter error,enteragain.");
scanf("%d",&n);
}
for(i=0;i<n;i++)
{
temp=1;
for(j=0;j<=i;j++)
temp+=(long int)pow(10,j)*i;
sum+=temp;
}
printf("sum=%ld\n",sum);

return 0;
}
用这个代码计算1+22+333+4444+...的前n项的值(n<10)
请问第16行的temp=1,和第18行的temp+=(long int)pow(10,j)*i;有没有出错

img

#include <stdio.h>
int numn(int n)
{
    int num=0;
    for(int i=0;i<n;i++)
    {
        num=num*10+n;
    }
    return num;
}
int main()
{
    int sum=0;
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        sum+=numn(i);
        printf("%d",numn(i));
        if(i!=n)
        printf("+");
        else
        printf("=");
    }
    printf("%d\n",sum);
    return 0;
}