帮我看看出错的地方?(c语言)1+11+111+1111=?

来源:百度知道 编辑:UC知道 时间:2024/08/22 15:41:43
我是用i确定加的个数,n表示相加的数,例如:
i=4 , n=1 就是表示1+11+111+1111
麻烦看看下面的程序,那里出错了?

#include<stdio.h>
#include<math.h>
main()
{
int i;
long n,s,k;
scanf("%d %d",&n,&i);
for(i=0;i<n;i++)
{
n=n*(pow(10,i));
k=k+n;
s=s+k;
}
printf("%d \n",s);
}
你们的都测试过了,就是不行?无奈啊!我用的是TC
那个专家的还是不行,测试到6位以上就变成负数了。

#include<stdio.h>
#include <conio.h>
long int pw(int x,int y)
{
if (x>1) return (pw(x-1,y)*10+y);
else if (x==1) return (y);

}
main()
{
long int s =0;
int i,k,n;
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++) s+=pw(i,k);
printf("%ld\n",s);
getch();
}

****************************************************

经测试,在TC2.0中到9位未出现任何问题。

#include<stdio.h>
#include<windows.h>
main()
{
int i,n;
scanf("%d %d",&i,&n);
long t=0;
for(int j=1;j<=i;j++)
{
char s[10];
long m;
for (int k=0;k<j;k++)
{
s[k]=n+48;
}
s[k]='\0';
m=atol(s);
t+=m;
}
printf("%d \n",t);
}

以上程序在VC6中编译通过,输入4和1的结果是1234

main()
{
int i;
long n,s,k;
k=n;---------------------