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);
} 展开
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);
} 展开
3个回答
展开全部
#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); }
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); }
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已运行成功!
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
吾问无为谓
追问
1。该题目代码有多处语法及逻辑错误,请调试后改正。
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
1/1+1/3+...+1/n(利用指针函数)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询