簡體   English   中英

偶數能被 3 整除的平均值 c++,我不明白為什么代碼運行錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM