C语言的小程序

来源:百度知道 编辑:UC知道 时间:2024/05/08 22:37:12
#include<math.h>
main()
{
int t,a,n,i,p,x,sum=0;
printf("输入要求和的整数和要求的个数a(为个位数)和n:");
scanf("%d,%d",&a,&n);
if(a==0&&n==0)
printf("输入错误\n");
else
for(i=1;i<=abs(n);++i)
{
if(i==1)
{t=a;printf("Sh=%d",t);}
else
{
p=pow(x=10,(i-1));
t=t+a*p;
printf("+%d",t);}
sum+=t;}
if(a!=0)
printf("=%d\n",sum);

}`
上面着段代码意思是:求Sn=a+aa+aaa+aaaa+...+aaaaa(n个并列),上面的代码段只能求1位数字的n个并列和
有谁可以告诉我两位数字的算法譬如象8个10怎么求?
我的意思是Sn=10+1010+101010+10101010+1010101010+101010101010+10101010101010+1010101010101010 (此时a=10,n=8)

#include<math.h>
main()
{
int t,a,n,i,p,x,sum=0;
printf("输入要求和的整数和要求的个数a(为个位数)和n:");
scanf("%d,%d",&a,&n);
if(a==0&&n==0)
printf("输入错误\n");
else
for(i=1;i<=abs(n);++i)
{
if(i==1)
{t=a;printf("Sh=%d",t);}
else
{
p=pow(x=10,(2i-1));
t=t+a*p;
printf("+%d",t);}
sum+=t;}
if(a!=0)
printf("=%d\n",sum);

}
不考虑整数表示范围的问题
按你的说法想几位数就将p=pow(x=10,(2i-1)); 中的2换成几。
假如想自动识别输入是几位数
可以用循环除10,直到结果<1,返回j
j即为上面的2

1:8个10超出了计算机里面整数标识的范围,大概你要求的是算法。