任务和代码:
/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.9.19
*版本号:v2.
*
*问题描述:求 Sn=a+aa+aaa+...+aa...a之值,其中 a是一个数字。
例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。
*问题输出:输出其结果
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,n,count=1,Sn=0,Tn=0;
printf("请输入 a 和 n 的值:\n");
scanf("%d %d",&a,&n);
while (count<=n)
{
Tn=Tn+a*pow(10,(count-1));
Sn=Sn+Tn;
count++;
}
printf("a+aa+aaa+...=%d\n",Sn);
return 0;
}
运行结果:
知识点总结:
1.运用迭代及循环求特殊多项式的和;2.迭代表达式的描述
心得:
可以看到,运行结果其实是错的,若将迭代式改为 Tn=Tn*10+a;则运行结果正确。
最大出错原因在于pow(x,y)中x、y及整个表达式均是double型,
故数值计算中应尽量避免强制类型转换。
最大出错原因在于pow(x,y)中x、y及整个表达式均是double型