C语言初步-第35讲: 问题求解方法——迭代(另类求和)

来源:互联网 发布:jdbcutils.java工具类 编辑:程序博客网 时间:2024/05/21 21:41

任务和代码:

/**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型

阅读全文
0 0