解题思路注意事项:


这个题的思路是:


首先确定n,是有几项相加,然后利用for()循环n次进行相加;


其次就是每次计算时要加的项,也就是几个2,我的方法是:

        1、先定义a=0;

        2、由于后一项都比前一项多一个2,所以a=a*10+2,因为a的值为0,所以当n=1的时候,a=2;

        3、求和将每个a都加上就可以了。


需要注意的是for()循环里面的表达式,循环的次数一定注意不要出错就没问题了。

参考代码:

#include<stdio.h>
int main()
{
	int n,Sn = 0,i,a = 0;
	scanf("%d",&n);
	for(i=0; i<n; i++){
		a = a * 10 + 2;
		Sn = Sn + a;
	}
	printf("%d\n",Sn);
	return 0;
}


点赞(24)
 

0.0分

101 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 57 条评论

林毅 3年前 回复TA
/*求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入。*/
#include <stdio.h>
int main()
{
	int Sn = 0, a = 0, n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		a = a * 10 + 2;
		Sn = Sn + a;
	}
	printf("%d", Sn);
}
加藤惠 3年前 回复TA
#include<stdio.h>
#include<math.h>
int main()
{
	int n,i;
	int sum=0;
	int x;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
	x=(pow(10,i)-1)/9*2;
	sum+=x;	
       printf("sum=%d\n",sum);
	}

	return 0;
}
为什么答案错误?大佬帮忙看看
加藤惠 3年前 回复TA
@苦竹 为什么答案错误
加藤惠 3年前 回复TA
@苦竹 #include<stdio.h> #include<math.h> int main() { 	int n,i; 	int sum=0; 	int x; 	scanf("%d",&n); 	for(i=1;i<=n;i++) 	{ 	x=(pow(10,i)-1)/9*2; 	sum+=x;	printf("sum=%d
",sum); 	}  	return 0; }
084621129 3年前 回复TA
求求大神舅舅孩子,不知道这两个哪里错了
int main()
{
    int i,m,n,t;
    scanf ("%d",&n);
    t=0;
    BEGIN:;//goto返回点
    for (i=0,m=0; n>=1; n--)
    {
        i=2*pow(10,n-1);
        m+=i;
    }
    t+=m;
    if(n>1)
    {
        n--;
        goto BEGIN;
    }
    else
        printf("%d",t);
    return 0;
}

int main()
{
    int i,m,n,t;
    scanf ("%d",&n);
    t=0;
    while(n>=1)
    {
        for (i=0,m=0; n>=1; n--)
        {
            i=2*pow(10,n-1);
            m+=i;
        }
        t+=m;
        n--;
    }
    printf("%d",t);
    return 0;
}
chenxw 3年前 回复TA
@小白 10^i不是指数啊,c语言的指数不是这样写的
小白 3年前 回复TA
#include <stdio.h>

int main(void)
{
	int n,i,a[n],j=0;
	a[0]=0;
	int sum = 0,flag = 1,temp = 1;
	scanf("%d",&n);
	while(flag)
	{
		for(i = 0;i < temp;i++)
		{
			a[j] += 2 * 10^i;
		}
		j++;	
		if(j == n)
		{
			flag = 0;
			break;
		}
		temp ++;
	}
	for(i = 0;i < n;i++)
	{
		printf("%d",a[i]); 
	}
	printf("%d",sum);
	return 0;
}
求解,这为什么不对
AkMoney 3年前 回复TA
@像光 你这个也不对鸭,sn=sn+a/5;//这行不应该这么写的哈
像光 3年前 回复TA
int main()
{
	int sn=0,i,n,a=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		a=pow(10,i);
		sn=sn+a/5;
	}
	printf("%d",sn);
}//求解这个.......
seventeen 3年前 回复TA
#include <stdio.h>
int main ()
{
	int n,a=2;
	long term=0,Sn=0;
	printf("请输入n的值:");
	scanf("%d",&n);
	while(n!=0)
	{
		term=term*10+a;
		Sn=Sn+term;
		n--;
	}
	printf("Sn=%d",Sn);
	return 0;
}