c语言求助,我这个运行出来不对,请帮我改一下,题目如图,拜托,谢谢

#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(intargc,char*argv[]){intn,k,sum,sign,item;//输入上限nn=0;//防止乱输入printf("请输入n(正整数):");scanf("%d",&n)... #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { int n, k, sum,sign,item; //输入上限n n = 0; //防止乱输入 printf( "请输入n(正整数):" ); scanf( "%d", &n ); //循环求的和 k = 1; //k从1开始 sum = 0; //开始时和为0 while( k <= n ) { sum += 1+pow(-1,k+1); //把k的值加到sum中 item=1/k; if(item<0.001)break; //输出计算结果 printf( "前%d项数列的和=%.6f\n", n, sum ); k++; //k自加1 } return 0; } 展开

第1个回答  2020-01-12

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])

float k,sum,sign,item;//int是整数,后面都按整数运算了,得不到0.几的数据 
//要求中没有让输入的,是排列到item<0.001,不是输入多少,排列多少个,所以不需要输入n 
k = 1; 
sum = 0; 
item=1/k;
while( item>=0.001) {
sum += pow(-1,k+1)/k; //这个公式写的不对,不是光多个±1相加,还得除以k呢 
printf( "前%d项数列的和=%.6f\n", (int)k, sum );//输出的是k和sum,不是n和sum
k++; 
item=1/(float)k;//注意和k++的顺序,k++在后面,会多算一次。 
}
return 0;
}
如图所示,最后结果差一点点,是电脑自身精度的问题,可以忽略。望采纳。。。。。。

相似回答