[英]Average of even numbers divisible by 3 c++,I don't understand why the code is running wrong
#include using namespace std;
void enterarray(int a[], int &n) {
cout<<"please enter n: ";
cin >> n;
for(int i=0; i<n; i++) cin >> a[i];
}
double average(int a[100], int n) {
int t=0, count;
for(int i=0; i<n; i++)
if( a[i] % 2 == 0 && a[i] % 3 == 0) {
t = t + a[i];
count++;
}
return t * 1.0 / count;
}
int main() {
int a[100];
int n;
enterarray(a, n); cout<<average(a, n);
return 0;
}
count 需要初始化。
int t=0, count=0;
n 需要在 main 中初始化。
int n = 0;
enterarray(int a[], int &n)
可以做邊界檢查 n 小於等於 100。
這是您的格式化代碼:
#include
using namespace std;
void enterarray(int a[], int & n) {
cout << "please enter n: ";
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
}
double average(int a[100], int n) {
int t = 0, count;
for (int i = 0; i < n; i++)
if (a[i] % 2 == 0 && a[i] % 3 == 0) {
t = t + a[i];
count++;
} return t * 1.0 / count;
}
int main() {
int a[100];
int n;
enterarray(a, n);
cout << average(a, n);
return 0;
}
除了缺少的 header 蒼蠅(可能是<iostream>
)之外,您聲明了n
,但沒有對其進行初始化,因此n
未初始化。 嘗試使用n
將導致未定義的行為。 同樣的事情發生在average
count
將您的代碼更改為:
#include <iostream>
using namespace std;
void enterarray(int a[], int & n) {
cout << "please enter n: ";
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
}
double average(int a[100], int n) {
int t = 0, count = 0;
for (int i = 0; i < n; i++)
// better alternative
if (a[i] % 6 == 0) {
t = t + a[i];
count++;
} return t * 1.0 / count;
}
int main() {
int a[100];
enterarray(a, 100);
cout << average(a, 100);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.