这是一个关于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个回答

方法一:等比数列求和公式
方法二:你指的:我想用浮点数做这个题目,但是又不能求余数,进行正常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);   
}
qq_43412960
qq_43412960 优秀
4 个月之前 回复
#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;
}
qq_43412960
qq_43412960 回复qtchen_1988: 大佬辛苦了 给你撒花花
4 个月之前 回复
qtchen_1988
qtchen_1988 回复qtchen_1988: 还有索引值最好不要用float。
4 个月之前 回复
qtchen_1988
qtchen_1988 这个跟数据转换有关,有一种叫隐式转换,有一种叫强转。 sum += 1.0/i; 或者 sum += 1/(float)i;
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问