c语言求x+x^2+x^3+...x^n的结果 帮忙看错

{
int i=0,n;
float s,x,z;
s=0;
float fact(float x,int n);
scanf("%f %d",x,n);
for(i=1;i<=n;i++)
z=fact(x,n);
s=s+z;
printf("%f",s);
return 0;
}
float fact(float x,int n)
{
int j=0;
float f;
f=1;
for(j=1;j<=i;j++)
f=x*x;
return f;
}

提示error C2065: 'i' : undeclared identifier i 我前面定义了的啊 告诉为什么,怎么改,谢谢

第1个回答  2012-07-24
#include<stdio.h>
int main(void)
{
int i=0,n;
float s,x,z;
s=0;
float fact(float x,int n);
scanf("%f %d",&x,&n);/***/
for(i=1;i<=n;i++)
{/**/
z=fact(x,i);
s=s+z;
}
printf("%f",s);
return 0;
}
float fact(float x,int n)
{
int j=0;
float f;
f=1;
for(j=1;j<=n;j++) /**/
f=f*x; /**/
return f;
} 。改的不少,你好好对照下。你这程序有手误的地方,也有逻辑错误的地方。追问

果然一看好多错误的地方
改了之后还是计算不对啊 输入2 2 进去
输出的是8啊
for(j=1;j<=n;j++) /**/ 这里那不是永远都是n次方了吗
f=f*x; /**/

追答

哪是8呢。明明是6啊。我都运行过啦。

第2个回答  2012-07-24
float fact(float x,int n)
{
int j=0;
float f;
f=1;
for(j=1;j<=i;j++)你这里错了,i又不是全局变量,怎么可以出现在这里
f=x*x;
return f;
}追问

我要这里的i 和前面的 i 一样 怎么改啊

追答

你的代码应该这样改
{
int i=0,n;
float s,x,z;
s=0;
float fact(float &x,int &n);//加上&
scanf("%f %d",x,n);
for(i=1;i<=n;i++) //这里少了一对大括号
{
z=fact(x,i); // 把n该为i
s=s+z;
}
printf("%f",s);
return 0;
}
float fact(float x,int n)
{
int j=0;
float f;
f=1;
for(j=1;j<=n;j++) //把i改为n
f=f*x; //一个x改为f
return f;
}

本回答被提问者采纳
第3个回答  2012-07-24
float fact(float x,int n) 这个函数有两个参数,但参数n怎么没有使用???
for(j=1;j<=i;j++)f=x*x; 这句一直在赋值给f,而且赋的都是一样的值x*x,没啥意义。追问

哦,这个我懂了 怎么改呢

第4个回答  2012-07-24
int i = 0; //i的定义放到前面来,变成全局变量,后面的函数里才能用
int main()
{
/*int i=0,n; */ /*把i定义成全局变量*/
int n;
float s,x,z;
s=0;
float fact(float x,int n);
scanf("%f %d",x,n);
for(i=1;i<=n;i++)
z=fact(x,n);
s=s+z;
printf("%f",s);
return 0;
}
float fact(float x,int n)
{
int j=0;
float f;
f=1;
for(j=1;j<=i;j++)
f=x*x;
return f;
}本回答被网友采纳
第5个回答  2012-07-24
- - 好乱的代码。追问

初学者 让您见笑了,能告诉我怎么改吗

追答

我是路过打酱油的 、

相似回答
大家正在搜