qq_43412960
2019-10-19 17:17
采纳率: 79.1%
浏览 448

这是一个关于C语言数据类型的问题

我想编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,

然后我写了一个代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
float *num;
float num1;
float sum=0;
printf("请输入整数!");
scanf("%f",&num1);
num=&num1;
if(*num%2==0)
{for(float index=1;index<=*num;index++)
{if(index%2==0||index==1)
sum+=1/(index);
}
}
printf("%f",sum);
    system("pause");
return 0;} 

发现一个很严重的问题。我想用整数型做这个题目,但是这么做,不能存小数点后的数,我想用浮点数做这个题目,但是又不能求余数,进行正常if判断操作,(我的代码就是这个问题)我想用字符来做这个题,但是字符又不好求余数,进行判断,然后进行接下来的操作。。。。
做这种题,有没有万能药匙啊,我思维混乱。。。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 空白如空 2019-10-19 17:34
    已采纳

    方法一:等比数列求和公式
    方法二:你指的:我想用浮点数做这个题目,但是又不能求余数,进行正常if判断操作
    解决:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int num;
        float sum=0;
        printf("请输入整数!");
        scanf("%d",&num);
        if(num%2==0)
        {
            //不用加判断,直接index+=2就可以了
            for(float index=2;index<=num;index+=2)
            {   
                sum+=1/(index);
            }
        }
        printf("%f",sum);   
    }
    
    已采纳该答案
    打赏 评论
  • qtchen_1988 2019-10-19 17:31
    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        int n;
        scanf("%d",&n);
        float sum = 0;
        for(int i=2;i<=n;++i)
        {
            if(i%2 == 0)
                sum += 1.0/i;
        }
        printf("Output: sum=%f\n",sum);
        return 0;
    }
    
    打赏 评论

相关推荐 更多相似问题