求1+12+123+…+123…n之和,,编译出来结果不对,错误在哪?

//输入1个正整数n(0≤n≤6), 求1+12+123+…+123…n之和。要求定义并调用函数f(n),它的功能是返回一个长整数12…n。例如,f(2)的返回值是12,f(5)的返回值是12345。
//运行示例:
//Enter n: 4
//sum = 1370
#include
long f(int n)
{

int i;
double tn=0;

for(i = 1; i <= n; i++)
    tn=i+10*tn;

return tn;

}
int main(void)
{
int i, n;
long sn;

printf("Enter n: "); 
scanf("%d", &n);
sn = 0;
for(i = 1; i <= n; i++)
    sn+=i+10*sn;
printf("sum = %d\n", sn);

return 0;

}

图片说明
图片说明
不知道你能不能理解,你在循环赋值里面出错了

你可能是忘了用你的函数 f()了,
把for循环中的

sn+=i+10*sn;

换成

sn+=f(i)