#include<iostream> #include<iomanip> #include<cmath> using namespace std; void fun(int *p, int n); void fun(int *p, int n) { int i,sum=0; float average,s=0; for(i=0;i<n;i++) {sum=sum+*(p+i);} average=sum/n; for(i=0;i<n;i++) { s=s+(*(p+i)-average)*(*(p+i)-average));} s=s/n; s=sqrt(s); cout<<fixed<<setprecision(2)<<s; } int main() { int a[10],i,n; cin>>n; for(i=0;i<n;i++) {cin>>a[i];} fun(a,n); return 0; } 有语法错误吗
时间: 2023-11-30 13:04:11 浏览: 80
使用include <iostream>时一定要加using namespace std
有几处语法错误需要修正:
1. `#include<iostream> #include<iomanip> #include<cmath>` 应该写成一行,中间用空格分隔。
2. 在 `void fun(int *p, int n);` 函数声明后面不需要加 `;`。
3. `s=sqrt(s);` 应该写成 `s=std::sqrt(s);`,因为 `sqrt` 函数定义在 `cmath` 命名空间中。
以下是修改后的代码:
```c++
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
void fun(int *p, int n);
void fun(int *p, int n)
{
int i, sum = 0;
float average, s = 0;
for(i = 0; i < n; i++) {
sum = sum + *(p + i);
}
average = sum / n;
for(i = 0; i < n; i++) {
s = s + (*(p + i) - average) * (*(p + i) - average);
}
s = s / n;
s = std::sqrt(s);
cout << fixed << setprecision(2) << s;
}
int main()
{
int a[10], i, n;
cin >> n;
for(i = 0; i < n; i++) {
cin >> a[i];
}
fun(a, n);
return 0;
}
```
阅读全文