我遇到了一个问题:执行程序时,我的int返回的值太大了。 该程序计算算术平均值。
例如:当我输入1,2,3,4,5时,它会显示 2293393 。
/*
* File: main.cpp
* Author: Natch
*
* Created on 4 listopad 2012, 15:32
*/
#include <cstdlib>
#include <iostream>
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
int n,x;
x = 0;
/*
* a - array
* x - repeat
* n - array fields
* suma - array fields sum
*/
cout << "Srednia liczb" << endl;
cout << "Program oblicza srednia z x liczb." << endl;
cout << "Podaj ilosc liczb do obliczenia sredniej:" << endl;
cin >> n;
int a[n];
while(x<n) {
x++;
cout << "Podaj " << x << " liczbe:" << endl;
cin >> a[x];
}
long int suma;
for (int i = 0; i < n; i++) {
suma += a[i];
}
int srednia = suma/n;
cout << "Srednia wynosi:" << endl << srednia << endl;
system("pause");
return 0;
}
对不起我的英语,我来自波兰。
您可以在Google翻译中翻译couts(pl-&gt; en)。
答案 0 :(得分:4)
您的程序有一个经典的“off by one”错误:在x
中使用它作为索引之前递增a[x]
,因此第0个元素保持未初始化状态:
while(x<n) {
cout << "Podaj " << (x+1) << " liczbe:" << endl;
cin >> a[x++];
}
答案 1 :(得分:2)
将变量suma初始化为零。
long int suma=0;
而不是在x
之前增加cout
,而是在cout
中增加{。}}。
cout << "Podaj " << x++ << " liczbe:" << endl;