求问c语言程序错误!怎么输出都是sum=-1😱😭😭

求问c语言程序错误!怎么输出都是sum=-1😱😭😭😭

说你的代码是胡写一点不过,比如n是刚刚输入的,后面又n=1那不是白输入n了?提供以下代码参考:

#include "stdio.h"
int main(int argc,char *argv[]){
    int n,i;
double s,t;
printf("Input n(int n>0)...\nn=");
if(scanf("%d",&n)!=1 || n<1){
printf("Input error, exit...\n");
return 0;
}
for(s=0,t=i=1;i<=n;i++)
s += i&1 ? (i+1)/(t*=i) : -(i+1)/(t*=i);
printf("The result is %g\n",s);
    return 0;
}

追问

你的代码好复杂我没懂…我又写了一份 有一个错误不知道咋改😧

哦哦我懂了

追答

你写了那么多还是错的。我的代码只有3行是解决实质问题的,就是for到printf那3行,前面是保证输入正确的代码——这样的代码你嫌复杂?你的代码不是有一个错误,而是全错啦:

    sum=sum+t*((n+1)/n);不就是sum=sum+t吗,还算什么?因为(n+1)/n永远是1;所以按t的正、负取值,奇数项之和就是-1,偶数项之和就是0,永远是这样!

    你写了函数hs却不在主函数中调用,那输出肯定是sum的机器垃圾值。

    正、负取值也没有跟题目要求对应,题目是从1开始的奇数项为正、偶数项为负,你却刚好弄反了。

追问

那我要是把sum那个式子的n改成t呢😮 我的本意是分母为1、2、3……这样😭

sum不是从0开始吗 那时候系数为-1,之后那等sum有数值之后,就变成1了…

你的代码我看懂了,分子分母俩都用了for循环,可是我想知道我的到底该咋改😭被我的思路折磨😭

温馨提示:答案为网友推荐,仅供参考
相似回答