c语言高精度计算 s=1-1/2+1/3-1/4+.+1/99-1/100,精确到小数点后100位
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/08 11:29:31
c语言高精度计算 s=1-1/2+1/3-1/4+.+1/99-1/100,精确到小数点后100位
必须使用高精度加法函数add和高精度减法函数minus,形式为
void add(int *b,int *a),voidminus(int *b,int *a),
必须使用高精度加法函数add和高精度减法函数minus,形式为
void add(int *b,int *a),voidminus(int *b,int *a),
个人觉得不是很难,怎么没人回答呢.#include <stdio.h>
/* 表示需要精确的小数点位数 */
#define N 100
/* 记录加法运算可能产生的进位,或减法运算可能产生的借位 */
int CF = 0;
/*
divider: 被除数
div: 除数
integer: 计算结果的整数部分
result: 计算结果的小数部分
*/
void Div(int divider, int div, int *integer, int *result)
{
int i = 0;
*integer = divider / div;
divider %= div;
for (i=0; i<N; i++)
{
divider *= 10;
result[i] = divider / div;
divider %= div;
}
}
void Add(int *b, int *a)
{
int i;
int overflow = 0;
for (i=N-1; i>=0; i--)
{
b[i] += (a[i] + overflow);
if (b[i] >= 10)
{
overflow = 1;
}
else
{
overflow = 0;
}
b[i] %= 10;
}
CF = overflow;
}
void Minus(int *b, int *a)
{
int i;
int borrow = 0;
for (i=N-1; i>=0; i--)
{
b[i] -= (a[i] + borrow);
if (b[i] < 0)
{
b[i] += 10;
borrow = 1;
}
else
{
borrow = 0;
}
}
CF = borrow;
}
int main()
{
int div;
int Sum[N] = {0}; // 存储最终结果的小数部分
int Tmp[N] = {0}; // 存储各表达式的小数部分
int intOfSum = 0; // 存储最终结果的整数部分
int intOfTmp = 0; // 存储各表达式的整数部分
int i;
int sign = -1; // 记录表达式符号位
for (div=1; div<=100; div++)
{
sign *= (-1);
Div(1, div, &intOfTmp, Tmp);
if (sign > 0)
{
Add(Sum, Tmp);
intOfSum += (intOfTmp + CF);
}
else
{
Minus(Sum, Tmp);
intOfSum -= (intOfTmp + CF);
}
}
/* 打印输出结果: 整数+小数 */
printf("result is %d.", intOfSum);
for (i=0; i<N; i++)
{
printf("%d", Sum[i]);
}
printf("\n");
return 0;
}
/* 表示需要精确的小数点位数 */
#define N 100
/* 记录加法运算可能产生的进位,或减法运算可能产生的借位 */
int CF = 0;
/*
divider: 被除数
div: 除数
integer: 计算结果的整数部分
result: 计算结果的小数部分
*/
void Div(int divider, int div, int *integer, int *result)
{
int i = 0;
*integer = divider / div;
divider %= div;
for (i=0; i<N; i++)
{
divider *= 10;
result[i] = divider / div;
divider %= div;
}
}
void Add(int *b, int *a)
{
int i;
int overflow = 0;
for (i=N-1; i>=0; i--)
{
b[i] += (a[i] + overflow);
if (b[i] >= 10)
{
overflow = 1;
}
else
{
overflow = 0;
}
b[i] %= 10;
}
CF = overflow;
}
void Minus(int *b, int *a)
{
int i;
int borrow = 0;
for (i=N-1; i>=0; i--)
{
b[i] -= (a[i] + borrow);
if (b[i] < 0)
{
b[i] += 10;
borrow = 1;
}
else
{
borrow = 0;
}
}
CF = borrow;
}
int main()
{
int div;
int Sum[N] = {0}; // 存储最终结果的小数部分
int Tmp[N] = {0}; // 存储各表达式的小数部分
int intOfSum = 0; // 存储最终结果的整数部分
int intOfTmp = 0; // 存储各表达式的整数部分
int i;
int sign = -1; // 记录表达式符号位
for (div=1; div<=100; div++)
{
sign *= (-1);
Div(1, div, &intOfTmp, Tmp);
if (sign > 0)
{
Add(Sum, Tmp);
intOfSum += (intOfTmp + CF);
}
else
{
Minus(Sum, Tmp);
intOfSum -= (intOfTmp + CF);
}
}
/* 打印输出结果: 整数+小数 */
printf("result is %d.", intOfSum);
for (i=0; i<N; i++)
{
printf("%d", Sum[i]);
}
printf("\n");
return 0;
}
c语言高精度计算 s=1-1/2+1/3-1/4+.+1/99-1/100,精确到小数点后100位
c语言求s=1-1/2+1/3-1/4+1/5-1/6+…+1/99-1/100的值(按四舍五入方式精确到小数点后4位)
请用c语言编程计算1-1/2+1/3-1/4+1/5-...+1/99.(精确到小数点后3位)
c语言题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位.例如a=1,b=6,c=4时应输出0.166
c语言中如何判断计算结果精确到小数点后8位
C语言输入小数,精确到小数点后10位
计算π的近似值,精确到小数点后6位 设计vb程序 需要代码 VB里面的 π/2=2^2/1*3 ×4^4/3*5 ×.×
利用牛顿法求方面程*3 3*1=0 在*0=2 附近的根,精确到小数点后第3位
π精确到小数点后100位
π=?要求精确到小数点后100位
编程e=1+1/1i+1/2i+...,求求e的近似值,精确小数点后6位,..
一个正三角体,其中边长为1mm,求这个三角体顶点到其重心点的距离,要求精确到小数点后4位.