C语言问题:输入一个正整数n和一个实数x 按给定公式求cos(x)的近似值(保留4位小数)。

输入一个正整数n和一个实数x 按给定公式求cos(x)的近似值(保留4位小数)。要求 定义并调用power(x,n)计算幂函数,定义并调用函数fact(n)计算n!。
#include <stdio.h>
void main()
{
int i,n,flag; /* flag-符号变量,在+1、-1交替变化 */
double x,item,sum; /* item-项变量, sum-和变量 */
//请在两条星线之间填入相应的代码, 声明fact函数和power函数
/*******************************************************/
double fact(int n);
double power(double x,int n);
/*******************************************************/
printf("输入一个正整数n和一个实数x:"); /* 输入提示 */
scanf("%d%lf",&n,&x);
//请在两条星线间填入相应代码, 按给定公式求cos(x)的近似值
//要求:调用函数fact求阶乘,调用函数power求幂函数。
/*******************************************************/
flag=-1;
if(n==1) {
sum=1;
}
else
{
sum=1;
for(i=2;i<=n;i++){
sum=sum+power(x,i)*flag/fact(i);
flag=-flag;
}

/******************************************************/
printf("cos(x)的近似值=%0.4f\n",sum); /* 输出结果 */

double fact(int n) //定义阶乘函数
{
double product; /* 连乘变量 */
int i,p;
//请在两条星线间填入相应代码, 计算n!
/*************************************/
product=1;p=2n-2;
for(i=1;i<=p;i++)
product=product*i;
/*************************************/
return product; /* 返回结果 */
}
double power(double x,int n) //定义幂函数
{
double pow; /* 连乘变量 */
int i;
//请在两条星线间填入相应代码, 计算n!
/*************************************/
for(i=2;i<=n;i++)
{
pow=pow*x*x;
}

/*************************************/
return pow; /* 返回结果 */
}

哪里错了?

错误不多,都是一些常犯的小错误,将来都能避免,首先是在函数fact里有一行p=2n-2;这个最明显,应该是p=2*n-2;其次,在函数power里最开始的double pow;没有初始化变量,会在下面的相乘时出错,此外就没有什么大问题了,主要就是main函数以及main里面的if else里缺少“}”这个符号,以后编程时最好把程序排列的更美观一点,就行了,下面附上改正后的程序,

#include <stdio.h>
void main()
{
int i,n,flag; /* flag-符号变量,在+1、-1交替变化 */
double x,item,sum; /* item-项变量, sum-和变量 */
//请在两条星线之间填入相应的代码, 声明fact函数和power函数
/*******************************************************/
double fact(int n);
double power(double x,int n);
/*******************************************************/
printf("输入一个正整数n和一个实数x:"); /* 输入提示 */
scanf("%d%lf",&n,&x);
//请在两条星线间填入相应代码, 按给定公式求cos(x)的近似值
//要求:调用函数fact求阶乘,调用函数power求幂函数。
/*******************************************************/
flag=-1;
if(n==1) {
sum=1;
}
else
{
sum=1;
for(i=2;i<=n;i++){
sum=sum+power(x,i)*flag/fact(i);
flag=-flag;
}
}

/******************************************************/
printf("cos(x)的近似值=%0.4f\n",sum); /* 输出结果 */
}

double fact(int n) //定义阶乘函数
{
double product; /* 连乘变量 */
int i,p;
//请在两条星线间填入相应代码, 计算n!
/*************************************/
product=1;
p=2*n-2;
for(i=1;i<=p;i++)
product=product*i;
/*************************************/
return product; /* 返回结果 */
}
double power(double x,int n) //定义幂函数
{
double pow=1; /* 连乘变量 */
int i;
//请在两条星线间填入相应代码, 计算n!
/*************************************/
for(i=2;i<=n;i++)
{
pow=pow*x*x;
}

/*************************************/
return pow; /* 返回结果 */
}
就这样,望采纳。。。。。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答