c++ 求助!急! 1+11+111+1111+····

编程计算:1+11+111+….,之和,输入项数n,当n=1时代表有一项1,当n=2时代表有两项1+11,以此类推.

#include <iostream>
using namespace std;

int main()
{
int i,n=1,h=0;
cin>>i;
for(int k=0;k<i;k++)
{
h=h+n;
n=n*10+1;
}
cout<<h<<endl;
system ("pause");
return 0;
}

我知道答案是这个,谁能帮详细讲解一下
尤其是
for(int k=0;k<i;k++)
{
h=h+n;
n=n*10+1;中k和h,n有什么关系
急!!!半小时内回答有加分!
初步明白了···
谢谢了
您有qq吗?
不明白还得请教

还有别的答案吗??

k是循环变量,从0到i.
i是输入的位数,即1的个数。如果加到1111,则i=4,k=0,1,2,3
n是求和的每一项。
i=0时,n=1
i=1时,n=10*1+1=11
i=2时,n=10*11+1=111
i=3时,n=10*111+1=1111
明白了?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-28
我昨天刚做了个题,是“求s=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数,例如:2+22+222+…+22222(此时n=5)”
我是这样做出来的哈:
#include <stdio.h>
#include <math.h>
void main()
{
int a,n,b,s;
scanf("%d%d",&a,&n);
b=a;
s=0;
while(b<a*pow(10,n))
{
s=b+s;
b=10*b+a;
}
printf("%d\n",s);
}
说明下,我用那个10得n次方不会,所以就用了pow函数,那个本来不用数学函数的。
不知道这个答案对楼主有帮助没~因为这是C的代码,但是算法应该差不多吧!(这个我也不清楚,呵呵)
第2个回答  2008-03-28
我知道答案是这个,谁能帮详细讲解一下
尤其是
for(int k=0;k<i;k++)
{
h=h+n;
n=n*10+1;中k和h,n有什么关系
急!!!半小时内回答有加分!
--------------
for(int k=0;k<i;k++)
{
h=h+n; //表示计算1+11+111+1111+····
n=n*10+1;//n表示下一项,1的下一个是11,11的下一个111,依此类推,而h表示把每一项加起来。

参考资料:在线等楼主半小时内结贴

第3个回答  2008-03-28
是这样的.通项an = 1/9[10^(n) - 1]
a1 = 1/9[10^(1) - 1] = 1
第4个回答  2008-03-27
通项an = 1/9[10^(n) - 1]

a1 = 1/9[10^(1) - 1] = 1
相似回答