求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和
类似sn=2+22+222+2222+22222
//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和
//类似sn=2+22+222+2222+22222这样的和
//确定一个数,然后相继计算它的后5项数
#include<stdio.h>
#include<Windows.h>
int main()
{
//先让用户传入一个数
int i=2;
//然后依次计算其不同位数
int shi = i + i * 10;
int bai = shi + i * 100;
int qian = bai + i * 1000;
int wan = qian + i * 10000;
int sum = shi + bai + qian + wan + i;
printf(“前5项的和为:%d”, sum);
system(“pause”);
return 0;
}
//修改版
//用函数的形式来解决问题
//创建一个名为CreatNum的函数,用于计算前5项的和
#include<stdio.h>
#include<windows.h>
#include<math.h>
int CreateNum(int a,int n)
{
//先剔除掉特殊情况
//当a>10或者a<0以及n<0这样的情况都是不满足的
if (a > 10 || a < 0 || n < 0)
{
return 0;
}
//因为这儿有一个个位数,所以记住i的值要从0开始
int i = 0;//i指的是n上面的指数
int num=0;
for (; i < n; i++)
{
//表示每一项的值
//后面main函数中的for循环用于将每一项的值相加后计算出总和
//此处要计算没一项,所以要使用pow()函数,需要#include<math.h>
num += a * pow(10, i);
}
//将计算得到的结果返回
return num;
}
int main()
{
//创建两个实参
//用实参a来表示用户传入的数
int a;
//用实参i表示循环的次数,同时因为循环次数与次幂数是同时增加的,所以它还可以当做实参传入
int i=1;
//创建一个变量来记录这些数字的和
int sum=0;
printf(“请输入你要求值得数:”);
scanf_s("%d", &a);
//创建一个for循环
//每执行一次循环就调用一次函数
for (; i < 6; i++)
{
//调用求和函数
//每次传入的i的值不同,CreatNum()函数中for循环的次数就不同
sum += CreateNum(a, i);
}
//输出sum的值就为前5项的和
printf(“前5项的和为%d”, sum);
system(“pause”);
return 0;
}