函数在C++中不起作用
Function isn't working in C++
我对下面的程序有一个问题,从第42行到第47行,
程序应该输出每个学生的平均值,但是它给出的是NaN而不是平均值。
有人能帮忙吗?
#include <iostream>
#include <iomanip>
using namespace std;
const int students = 3;
const int exams = 4;
int minimum( int [ ][ exams ], int, int );
int maximum( int [ ][ exams ], int, int );
double average( int [ ], int );
void printArray( int [ ][ exams ], int, int );
int main()
{
int studentGrades[ students ][ exams ] = { { 77, 68, 86, 73 }, { 96, 87, 89, 78 },
{ 70, 90, 86, 81 } };
cout << "The array is:t";
printArray( studentGrades, students, exams );
cout << "nnThe highest grade is "<< maximum( studentGrades,students,exams) <<endl;
cout << "The lowest grade is "<< minimum( studentGrades,students,exams) <<endl;
cout << fixed << setprecision( 2 );
for ( int person = 0; person < students; person++ )
cout << "nThe average grade for student " << person<< " is "<< average( studentGrades[ person ], exams );
return 0;
}
int minimum( int grades[][ exams ], int pupils, int tests )
{
int lowGrade = 100; // initialize to highest possible grade
for ( int i = 0; i < pupils; i++ )
for ( int j = 0; j < tests; j++ )
if ( grades[ i ][ j ] < lowGrade )
lowGrade = grades[ i ][ j ];
return lowGrade;
}
int maximum( int grades[][ exams ], int pupils, int tests )
{
int highGrade = 0; // initialize to lowest possible grade
for ( int i = 0; i < pupils; i++ )
for ( int j = 0; j < tests; j++ )
if ( grades[ i ][ j ] > highGrade )
highGrade = grades[ i ][ j ];
return highGrade;
}
double average( int setOfGrades[], int tests ) // here was a problem the output of the average is NaN
{
int total = 0;
for ( int i = 0; i < tests; i++ )
total += setOfGrades[ i ];
total=total/tests;
}
void printArray( int grades[][ exams ], int pupils, int tests )
{
cout << left << " [0] [1] [2] [3]";
for ( int i = 0; i < pupils; i++ ) {
cout << "nstudentGrades[" << i << "] ";
for ( int j = 0; j < tests; j++ )
cout << setw( 5 ) << grades[ i ][ j ];
}
}
您忘了退还您的总…
double average( int setOfGrades[], int tests )
{
int total = 0;
for ( int i = 0; i < tests; i++ )
{
total += setOfGrades[ i ];
}
total=total/tests;
return total;
}
您忘记了return
的值,最好按double
计算平均值:
double average( int setOfGrades[], int tests )
{
double total = 0; <------------------------- double
...
return total; <----------------------------- return the value
}
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用