C语言问题,迭代法求一个正数a的算术平方根的迭代公式为:在时计算的xn+1值就为数a的算术平方根.需

发布时间:2021-02-25 09:53:39

C语言问题,迭代法求一个正数a的算术平方根的迭代公式为:在时计算的xn+1值就为数a的算术平方根.需要你计算的数a从标准输入,可能有多个测试用例,以最后一行为0表示结束,计算每个计算的结果使用一行输出,结果保留6位小数.输入样例和样例输出的结果如下所示:样例输入:320样例输出:1.7320511.414214

网友回答

#include
#include
#include
#define CALLOC(ARRAY,NUM,TYPE)\x05\
\x05ARRAY = (TYPE*) calloc(NUM,sizeof(TYPE));\x05\
if (ARRAY == NULL) {\x05\
\x05printf(File:%s,Line:%d:,__FILE__,__LINE__); \
\x05printf(Allocating memory failed.\n);\x05\
\x05exit(0);\x05\
}#define REALLOC(ARRAY,NUM,TYPE)\x05\
\x05ARRAY = (TYPE*) realloc(ARRAY,(NUM)*sizeof(TYPE));\x05\
if (ARRAY == NULL) {\x05\
\x05printf(File:%s,Line:%d:,__FILE__,__LINE__); \
\x05printf(Allocating memory failed.\n);\x05\
\x05exit(0);\x05\
}int calcsqrt(double* sqrta,int n,double* a)
{\x05int i;
\x05double xp,xn;
\x05\x05for (i=0; i 1e-6);
\x05\x05sqrta[i] = xn;
\x05}\x05return 0;
}int main()
{\x05double* a = NULL;
\x05double* sqrta = NULL;
\x05int n = 0;
\x05double tmp;
\x05int i;
\x05printf(Please input a series of positive numbers,0 to end:\n);
\x05while(1) {
\x05\x05scanf(%lf,&tmp);
\x05\x05if (tmp>0) {\x05\x05\x05n++;
\x05\x05\x05REALLOC(a,n,double);
\x05\x05\x05a[n-1] = tmp;
\x05\
以上问题属网友观点,不代表本站立场,仅供参考!