1.源代码
#include <stdio.h>
#include <math.h>
int fun(int a,int n)
{
double fun=0;
int i,j;
for(i=0;i<n;i++){
fun+=pow(10,i)*a;
for(j=0;j<i;j++){
fun+=pow(10,j)*a;
}
}
return fun;
}
int main()
{
int a,n;
int s=0;
scanf("%d %d",&a,&n);
s=fun(a,n);
printf("s=%d",s);
return 0;
}
2.代码思路
这段代码的功能是从标准输入读取两个整数a和n,然后计算一个数学表达式的值,最后在标准输出打印出结果。
这段代码的逻辑是:
- 首先,定义了四个变量,其中a,n,s是整型变量,fun是双精度浮点型变量,还定义了两个函数,fun和main,其中fun是自定义的函数,main是程序的入口函数。
- 然后,进入main函数,使用scanf函数从标准输入读取两个整数,并赋值给a和n变量,这两个变量表示要计算的数学表达式的参数。
- 接着,调用fun函数,将a和n作为参数传递给fun函数,fun函数的功能是计算以下数学表达式的值:
fun(a,n)=a+a×10+a×102+⋯+a×10n−1+a×(10+102+⋯+10n−1)
- 然后,进入fun函数,使用两层for循环,从i=0到i<n,从j=0到j<i,每次循环执行以下操作:
- 将fun的值加上10i×a,并赋值给fun变量,这样就相当于计算了数学表达式的前半部分,即a+a×10+a×102+⋯+a×10n−1。
- 将fun的值加上10j×a,并赋值给fun变量,这样就相当于计算了数学表达式的后半部分,即a×(10+102+⋯+10n−1)。
- 最后,返回fun的值,赋值给s变量,然后使用printf函数打印出s的值,以及一个换行符,这样就在标准输出显示了数学表达式的结果。
下面是这段代码的输出样例,假设输入的数据是:
2 3
那么输出的结果是:
s=246