C语言程序设计题,编程出错。往大神修改~

#include<stdio.h>main(){floatpeven(int),podd(int),dcall(float(*fp)(),int);floatsum;in... #include <stdio.h>
main()
{
float peven(int),podd(int),dcall(float(*fp)() ,int);
float sum;
int n;
while (1)
{
scanf("%d",n);
if(n>1)
break;
}
if(n%2=0)

printf("Even=");
sum=dcall(peven,n);

else

printf("Odd=");
sum=dcall(podd,n);

printf("%f",sum);
}
floatpeven(int n)
{
float s;
int i;
s=1;
for(i=2;i<=n;i+=2)
s+=1/i;
return(s);
}
floatpodd(int n)
{
float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
s+=1/i;
return(s);
}
floatdcall(float (*fp)(),int n)
{
float s;
s=(*fp)(int n);
return(s);
}
展开
 我来答
15116685453
推荐于2016-03-12
知道答主
回答量:52
采纳率:0%
帮助的人:20.9万
展开全部
#include <stdio.h>
float peven(int n);
float podd(int n);
float dcall(float (*fp)(),int n);
void main()
{

float sum;
int n;
while (1)
{
scanf("%d",n);
if(n>1)
break;
}
if(n%2=0)
{
printf("Even=");
sum=dcall(peven,n);
}/*加上大括号表示一个复合语句,这样满足if语句才会执行大括号里的语句*/
else
{
printf("Odd=");
sum=dcall(podd,n);
}
printf("%f",sum);
}
float peven(int n)
{
float s;
int i;
s=1;
for(i=2;i<=n;i+=2)
s+=1/i;
return(s);
}
float podd(int n)
{
float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
s+=1/i;
return(s);
}
float dcall(float *fp,int n)/*函数的入口地址传给fp指针,但是* /
{
float s;
s=(*fp)(n);/*int 是定义变量n时用的,这里n已经在函数第一行定义好了*/
return(s); }

我可能看懂你的意思了。
#include <stdio.h>
float peven(int n);
float podd(int n);
void main()
{

float sum;
int n;
while (1)
{
scanf("%d",n);
if(n>1)
break;
}
if(n%2=0)
{
printf("Even=");
sum=peven(n);
}/*加上大括号表示一个复合语句,这样满足if语句才会执行大括号里的语句*/
else
{
printf("Odd=");
sum=podd(n);
}
printf("%f",sum);
}
float peven(int n)
{
float s;
int i;
s=1.0;
for(i=2;i<=n;i+=2)
s+=1.0/i;/*如果除号两侧都是整形,那么系统默认取整形的商,比如1/2=0,1/4=0,而有一个就浮点型,那么运算就会转换成浮点型运算,因为i会被自动转换成浮点型数据,可以参考书本的数据类型的转换*/
return(s);
}
float podd(int n)
{
float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
s+=1.0/i;
return(s); }
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倒退不悔
2013-03-03 · 超过19用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:44.7万
展开全部
已运行成功!
#include <stdio.h>
main()
{
float peven(int),podd(int),dcall(float(*fp)() ,int);
float sum;
int n;
while (1)
{
scanf("%d",&n); //此处n前加&
if(n>1)
break;
}
if(n%2==0) //此处需要判断==而非赋值=
{
printf("Even=");
sum=dcall(peven,n);
}//此处无大括号会形成语法错误,else语句不对
else
{
printf("Odd=");
sum=dcall(podd,n);
}
printf("%f",sum);
}

float peven(int n)
{
float s;
int i;
s=0;
for(i=2;i<=n;i+=2)
s+=1.0/i; //此处1/i计算为整数
return(s);
}
float podd(int n)
{
float s;
int i;
s=0;
for(i=1;i<=n;i+=2)
s+=1.0/i; //此处1/i计算为整数
return(s);
}
float dcall(float (*fp)(int ),int n) //此处 (*fp)( )内有参数,可以看谭浩强的书关于指向函数的指针那一节
{
float s;
s=(*fp)(n);
return s;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1210403827zwt
2013-03-03
知道答主
回答量:5
采纳率:0%
帮助的人:7450
展开全部
吾问无为谓
追问
1。该题目代码有多处语法及逻辑错误,请调试后改正。
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
   1/1+1/3+...+1/n(利用指针函数)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式