pta上 使用函数求特殊a串子符数列和
#include
int fn( int a, int n );
int SumA( int a, int n );
int main()
{
int a, n;
scanf("%d %d", &a, &n);
printf("fn(%d, %d) = %d\n", a, n, fn(a,n));
printf("s = %d\n", SumA(a,n));
return 0;
}
int fn( int a, int n )
{
int i,sum=0;
for(i=1;i<=n;i++){
sum+=a;
a=a*10+a;
}
return sum;
}
int SumA( int a, int n )
{
int sum=0,i;
for(i=1;i<=n;i++){
sum+=fn(a,i);
}
return sum;
}
运行结果
2 3
fn(2,3) = 266
s = 292
修改处见注释,供参考:
#include <stdio.h>
int fn(int a, int n);
int SumA(int a, int n);
int main()
{
int a, n;
scanf("%d %d", &a, &n);
printf("fn(%d, %d) = %d\n", a, n, fn(a, n));
printf("s = %d\n", SumA(a, n));
return 0;
}
int fn(int a, int n)
{
int i, sum = 0, k = 0; //修改
for (i = 1; i <= n; i++) {
k = k * 10 + a;
// sum += k;修改
}
return k; //return sum;
}
int SumA(int a, int n)
{
int sum = 0, i;
for (i = 1; i <= n; i++) {
sum += fn(a, i);
}
return sum;
}
a=a*10+a; 是错误的,比如a=22时,下一个a应该是222,但你这样就是 a = 22 * 10 + 22 = 242了。
int fn( int a, int n )
{
int i,sum=0,t = a;
for(i=1;i<=n;i++){
sum+=t;
t=t*10+a;
}
return sum;
}