#include <iostream> using namespace std; int main() { int n; double pi = 0; int flag = 1; cout << "请输入迭代次数:"; cin >> n; for (int i = 0; i < n; i++) { pi += flag * 1.0 / (2 * i + 1); flag *= -1; } pi *= 4; cout << "π的值为:" << pi << end1; return 0; }
时间: 2024-03-20 13:40:14 浏览: 58
这段代码也是用来计算π的值的,和之前的实现方式类似,主要区别在于这里加入了用户输入迭代次数 n,使得程序的灵活度更高。代码实现思路和之前的类似,不再赘述,以下是对代码的一些建议:
- 第9行代码中应该是 `endl`,而不是 `end1`。
- 第14行代码中应该是 `endl`,而不是 `end1`。
- 在进行除法运算时,需要将其中一个操作数强制转换为浮点型,可以写成 `1.0 / (2 * i + 1)`,这样可以避免除法运算的精度问题。
- 变量名可以更加直观,例如 `sum` 可以更改为 `pi`,`f` 可以更改为 `flag`。
修改后的代码如下:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
double pi = 0;
int flag = 1;
cout << "请输入迭代次数:";
cin >> n;
for (int i = 0; i < n; i++) {
pi += flag * 1.0 / (2 * i + 1);
flag *= -1;
}
pi *= 4;
cout << "π的值为:" << pi << endl;
return 0;
}
```
这样的代码更加规范和易读,更符合 C++ 的编码规范。
相关问题
编译下列程序,改正所出现的错误信息,并写出输出结果。 1) //sy1_1.cpp main() { cout<<”This is a program.” } 2) //sy1_2.cpp #include<iostream> using namespace std; int main() { cin>>x; int y=x*x; cout<<”y=<<y<<\n”; return 0; } 3) //sy1_3.cpp #include<iostream> using namespace std; int main() { int a,b; a=7; int s=a+b; cout<<”a+b”<<s<<endl; return 0; }
1) //sy1_1.cpp
```
#include<iostream>
using namespace std;
int main() {
cout<<"This is a program.";
return 0;
}
```
输出结果为:
This is a program.
2) //sy1_2.cpp
```
#include<iostream>
using namespace std;
int main() {
int x;
cin>>x;
int y=x*x;
cout<<"y="<<y<<"\n";
return 0;
}
```
在输入一个整数后,输出结果为该整数的平方值。
3) //sy1_3.cpp
```
#include<iostream>
using namespace std;
int main() {
int a=7,b=9;
int s=a+b;
cout<<"a+b="<<s<<endl;
return 0;
}
```
输出结果为:
a+b=16
#include <iostream> using namespace std; int J(int h) { int p; for(int i=1;i<=h;i++){ p*=i; } return p; } double sin(double x) { double s=0.0; double t=x; for(int i=0;i<4;i++){ s+=t/J(i*2+1); t=-t*x*x; } return s; } int main() { double n,m; double PI=3.14; cin>>n; m=(n*PI)/180; cout<<sin(m); 这串代码有啥问题 }
这段代码缺少了一个右括号,应该在最后一行的cout语句后面加上右括号。此外,J函数中的p没有初始化,需要将其初始化为1,否则会出现未定义的行为。
正确的代码如下:
```c++
#include <iostream>
using namespace std;
int J(int h) {
int p = 1;
for(int i = 1; i <= h; i++) {
p *= i;
}
return p;
}
double sin(double x) {
double s = 0.0;
double t = x;
for(int i = 0; i < 4; i++) {
s += t / J(i * 2 + 1);
t = -t * x * x;
}
return s;
}
int main() {
double n, m;
double PI = 3.14;
cin >> n;
m = (n * PI) / 180;
cout << sin(m);
return 0;
}
```
此外,PI的值应该使用更精确的常量M_PI(定义在cmath库中),如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int J(int h) {
int p = 1;
for (int i = 1; i <= h; i++) {
p *= i;
}
return p;
}
double sin(double x) {
double s = 0.0;
double t = x;
for (int i = 0; i < 4; i++) {
s += t / J(i * 2 + 1);
t = -t * x * x;
}
return s;
}
int main() {
double n, m;
cin >> n;
m = (n * M_PI) / 180;
cout << sin(m);
return 0;
}
```
这样可以获得更准确的PI值。
阅读全文