输入两个正整数a和n,求a+aa+aaa+aa…a(n个a之和)。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如:fn(3,2)的返回值是33。
输入输出示例(括号内为说明文字):
8 (a=8)
5 (n=5)
Sum=98760 (sum=8+88+888+8888+88888)
1.1程序源代码
// An highlighted block
#include <stdio.h>
#include <math.h>
int fn(int a,int n);
int main()
{
int a=0,n=0,sum=0;
scanf("%d",&a);//scanf()里不能有换行符
scanf("%d",&n);
for(int j=n;j>0;j--)
{
sum=sum+fn(a,j);
}
printf("Sum=%d",sum);
return 0;
}
int fn(int a,int n)
{
int result=0;
for(int i=0;i<n;i++)
{
result=result+a*pow(10,i);//pow(2,3)表示2的3次
}
return result;
}
1.2错误示例
#include <stdio.h>
#include <math.h>
int fn(int a,int n);
int main()
{
int a=0,n=0,sum=0;
scanf("%d",&a);//scanf()里不能有换行符
scanf("%d",&n);
~~sum=sum+fn(a,n);~~
printf("Sum=%d",sum);
return 0;
}
int fn(int a,int n)
{
int result=0;
for(int i=0;i<n;i++)
{
result=result+a*pow(10,i);//pow(2,3)表示2的3次
}
return result;
}
1.3错误分析
当如上输出结果只输出了最终a=8,n=5的结果,而题目需要的是n=0-5这整个过程中的和。鉴于题目中要求“要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如:fn(3,2)的返回值是33。”说明函数fn()是没有问题的,只是在调用的时候除了问题。考虑如何能将每次的result值都能输出来,只能跟n有关,需要一个能控制n的循环。