C语言-5月11日 求Sn = a+aa+aaa+…aa…a之值,其中a是一个数字,n表示a的位数,n由键盘输入,例如:a = 2 2+22+222+2222+22222(此时n=5)

  • Post author:
  • Post category:其他


#include<stdio.h>
#include<math.h>
int main()
{
    int a = 0;
    int n = 0;//定义a,n的整型值,并进行初始化
    scanf("%d%d",&a,&n);
    int num = a;//每一循环后的值
    int sum = 0;//最后加起来的总值
    for(int i = 1;i<=n;i++)
    {
        sum = sum + num;//使每一次循环后的值加起来
        printf("%d\n",num);//输出每一次循环后的值
        num = num + a*pow(10,i);//实现累加的步骤例如a=2,n=2,那么第二位的值就是2*10的零次方+2*10的一次方
    }
    printf("%d\n",sum);//输出总值
    return 0;
}

如图,我输入a=2;b=5

输出完成

输出结果为24698.

从运行结果中可以看出程序可以将每一次循环的结果都输出,并且将所有循环的结果全部都加起来最后输出。

经过函数的封装的代码:

#include<stdio.h>
#include<math.h>
int suma(int a,int n)//定义suma函数
{
    int num = a;
    int sum = 0;
    for(int i = 1;i <= n;i++){
        sum += num;
        num = num+(a*pow(10,i));
    }
    return sum;//返回值为sum
}
int main()
{
    int a,n;//定义a,n整型值
    scanf("%d%d",&a,&n);//输入两个整型值
    printf("%d\n",suma(a,n));
    return 0;
}

如图,我输入a和n的值分别为3和3,经过演算,应该为:3+33+333=369,让我们看看程序:

输出完成