新手编了一个程序,找不到问题所在

#include
int main (void)
{
int i , j ;
long int sum = 0,n = 0;
for (i=1;i <= 9;i++)
{
for(j=i;j <=9;j++)
{
n = n*10 + i;
sum += n;
if(j==9)
printf( "%ld= ",n);
else
printf( "%ld+ ",n);
}
printf( "%ld\n ",sum);
}
return 0;

}

以上是我的程序,编译环境是vc++6.0...........
题目是:1+11+111+…+111111111=
2+22+222+…+222222222=
.....................................................
9+99+999+…+999999999=
用C语言如何编程求和?

#include
int main (void)
{
long i , j ;
long int sum = 0,n = 0;
for (i=1;i <= 9;i++)
{
for(j=1;j <=9;j++)
{
n = n*10 + i;
sum += n;
if(j==9)
printf( "%ld= ",n);
else
printf( "%ld+ ",n);
}
printf( "%ld\n ",sum);
sum=0;
n=0;
}
return 0;
}

#include
main(){
int a; //要输入的是几
int n;//最多有几个a
int count=1;//假定为一个
int sum=0;
int t=0;

printf("请输入a的值:");
scanf("%a",&a);
printf("\n");

printf("请输入n的值:");
scanf("%n",&n);
printf("\n");

printf("你输入的a=%d,n=%d",a,n);
while(count<=n)
{
t=t+a;
sum=sum+t;
a=a*10;
count++;
}
printf("a+aa+……=%d",sum);
printf("\n");

getchar();
}


#include
void main()
{
int a,b,sum=0;
int i,n;
printf("please input a:");
scanf("%d",&a);//如果是1则是求1+11+111+...
printf("please input n:");
scanf("%d",&n);//表示有多少项
b=a;
for(i=1;i<=n;i++)
{
sum+=b;
b=b*10+a; //若a为1,每次循环b的值为11,111,1111....
}

printf("Sum=%d\n",sum); //输出总和

}


我觉得应该这样写好一点。。你可以试一下。。

首先考虑的还是,数值溢出吧.

1 #include
2
3 int main()
4 {
5 int i, j;
6 long sum = 0;
7 long temp_sum = 0;
8 for(i = 1; i < 10; ++ i)
9 {
10 for(j = 0; j < 9; ++ j)
11 temp_sum += temp_sum * 10 + i;
12 sum += temp_sum;
13 temp_sum = 0;
14 }
15 printf("sum = %ld\n", sum);
16 return 0;
17
18 }