不知道函数哪里错了。

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;
}