一道很简单的C语言习题,求代码,要求有点思路

求sn=a+aa+aaa+…+aa…a的值,其中a是一个数字,n表示a的位数
例如:2+22+222+2222+22222 此时 n=5 a=2

#include <stdio.h>
void main()
{
double a,b,sn=0;
int i,n;
printf("please input a:");      //输入a的值
scanf("%lf",&a);
printf("please input n:");       //输入项数
scanf("%d",&n);
b=a;
for(i=1;i<=n;i++)

{
  sn+=b;                //各项的值加到sn上去。
  b=b*10+a;      //每一项的值,分析可以知道,222=22*10+2,知道项数之间的对应关系。
}

printf("Sn=%.0lf",sn);

}

1+11+111==123正确。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-23
#include<stdio.h>

int main()
{
int n,i,a,sum,b;
while(scanf("%d %d",&n,&a)!=EOF)
{
sum=0;
b=0;
for(i=0;i<n;i++)//n是几那么就循环几次
{
b=b*10+a;//取个变量b,令b=b*10+a,循环相加,第一次循环b=0*10+a,那么就是a,第二次循环b=a*10+a,那么就是aa,第三次其实就是b=aa*10+a就是aaa;b随着循环次数的值就是a,aa,aaa,....
sum+=b;//sum就是和,一直加b就是a+aa+aaa...
}
printf("%d\n",sum);
}
return 0;
}本回答被提问者采纳
第2个回答  2013-05-23
#include<stdio.h>
void sn(void);

int main(void)
{
sn();

return 0;
}
void sn(void)
{
int n = 0;
long int a = 0;
int b = 0;
long int sn = 0;
int i = 0;
print: printf("请输入n的值:");
scanf("%d",&n);
if(n<0)
{
printf("请输入一个正整数。");
goto print;
}
printf("请输入a的值:");
scanf("%d",&a);
b = a;
for(i = 0; i < n; i++)
{
sn = sn +a;
a = ((a*10)+b);
}
printf("sn = %d\n",sn);
}
第3个回答  2013-05-23
#include<stdio.h>
void main()
{
int n=0;
int m=0;
int sum=0;
printf("请输入n和m,例如“5,2”,意思为循环5次,基数为2\n");
scanf("%d,%d",&n,&m);
int a=m;
for(int i=0;i<n;i++)
{
sum+=a;
a=a*10+m;
printf("%d\t\t%d\n",sum,a);
}

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网