|
发表于 2022-11-5 19:25:05
|
显示全部楼层
你的代码存在以下问题:
- #include<stdio.h>
- #include<math.h>
- main()
- {
- float a,j,k,i,jg;
- printf("请输入a的数值\n");//此处不应该是中文分号
- scanf("%f",&a);
- (int)a; //这行无意义,你是否想写 a = (int)a; ?
- for(j=2;j>0;j++) //该循环会是很久的循环,因为 2 > 0,它 + 1 还是 > 0,死循环表述不准确,因为溢出了就会回到负数,那时候才会退出
- for(i=1;i<a;i++)
- k=i+1;
- jg=(-1*j)*i/k;
- printf("1/2-2/3+3/4+....+(a-1)/a的值为:%f",jg) //此处应该有分号
- }
复制代码
无编译错误、且无很久循环的改正:
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- float a,j,k,i,jg;
- printf("请输入a的数值\n");
- scanf("%f",&a);
- (int)a;
- for (j = 2; j > 0; j++)
- for(i = 1; i < a; i++)
- k = i + 1;
- jg = (-1 * j) * i / k;
- printf("1/2-2/3+3/4+....+(a-1)/a的值为:%f", jg);
- }
复制代码
但实现的结果与你想要求的值完全不对,应该这么写:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int a, s = 1; //a 推荐使用 int,因为次数肯定要用自然数,s 表示是加是减
- double res = 0; //运算结果,推荐使用 double
- printf("请输入a的数值: ");
- scanf("%d", &a);
- for (int i = 1; i < a; ++i) { //循环 a - 1 次
- res += (double)i / (i + 1) * s;
- s = -s; //取反
- }
- printf("1/2-2/3+3/4-....+(a-1)/a的值为: %g", res); //输出
- }
复制代码
求给最佳 |
|