题目描述
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。
例如,n=5时=2+22+222+2222+22222,n由键盘输入。
输入格式
n
输出格式
Sn的值
样例输入
5
样例输出
24690
代码解析
-
包含标准输入输出库和数学库:
#include <stdio.h>
和#include <math.h>
这两行代码是预处理指令,它们告诉编译器在实际编译之前包含标准输入输出库和数学库。标准输入输出库提供了进行输入输出操作的功能,如printf
和scanf
函数。数学库提供了数学函数的支持,如pow
函数。#include <stdio.h> #include <math.h>
-
定义函数
Sn
:long long Sn(int n)
这个函数接受一个整数参数n
,并返回一个长整型的序列和。函数内部定义了以下变量:long sum
:用于累加序列的和,初始化为0。int a
:用于存储序列中的当前项,初始化为2。int na
:用于存储累加的项数,初始化为0。long long Sn(int n) { long sum = 0; int a = 2; int na = 0; }
-
序列和的计算:
- 首先,将
a
的初始值(即2)加到sum
上。sum += a;
- 接下来,进入一个
for
循环,循环变量i
从1开始,直到n-1
。- 在每次循环中,首先更新
na
的值,将a
的当前值累加到na
上。 - 然后,更新
a
的值,将10的i
次方乘以2,得到序列的下一个项。 - 将
na
和更新后的a
的值加到sum
上,以计算当前的序列和。
for (int i = 1; i < n; i++) { na += a; a = 2 * pow(10, i); sum = sum + na + a; }
- 在每次循环中,首先更新
- 循环结束后,返回计算得到的序列和。
return sum;
- 首先,将
-
主函数:
int main(void)
是C程序的入口点,void
表示这个函数不接受任何参数。int main(void)
-
输入序列的长度:
scanf("%d", &n);
这个函数调用用于从标准输入(通常是键盘)读取一个整数n
,它代表序列的长度。scanf("%d", &n);
-
输出序列和:
printf("%d\n", Sn(n));
这个函数调用用于输出函数Sn
计算得到的序列和。printf("%ld\n", Sn(n));
-
函数返回:
return 0;
表示main
函数执行成功并返回0。在C语言中,main
函数的返回值通常用于表示程序的退出状态,其中0表示成功。return 0;
源代码
#include <stdio.h>
#include <math.h>
long long Sn(int n)
{
long sum = 0;
int a = 2;
int na = 0;
sum += a;
for (int i = 1; i < n; i++)
{
na += a;
a = 2 * pow(10, i);
sum = sum + na + a;
}
return sum;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%ld\n", Sn(n));
return 0;
}