注册 登录
编程论坛 C++教室

我刚写了那个“学生党,求助”的程序,为什么出了这种错误?

牧火逐云 发布于 2013-08-05 15:21, 464 次点击
/*假设某班的成绩已经存储在一维数组中, 请计算并输出
1) 平均分(保留2位小数)
2) 不及格的总人数
3) 不及格的成绩与学号(就是数组元素下标)
假设:
1) 成绩为0-100的整数
2) 60分以下(不含60)为不及格*/
#include<iostream>
//#include<cstring>
using namespace std;
Average(int*s)
{
    float arg;
    int i,sum=0,n=1;
    for(i=0;s[i]!=0;i++)
    {
        n++;
        sum+=s[i];
    }
    arg=static_cast<float>(sum/n);
    cout<<"The average score is:"<<arg<<"    n是多少:"<<n<<endl;
    return 0;
}
int icount(int*s)
{
    int i,n=0;
    for(i=0;s[i]!='\0';i++)
    {
    if(s[i]<60)
    {
        n++;
    cout<<"The number:"<<i<<' '<<"The score:"<<s[i]<<' '<<n<<endl;
    }
    }
    cout<<"The number of score under 60  is:"<<n<<' '<<endl;
    return 0;

}
void main()
{
    int t[10]={56,87,78,98,97,26,45,92,85,46};
    Average(t);
    icount(t);
}
平均数求不出来,是个很大的数。不及格的还要多一个,迷糊了...
3 回复
#2
牧火逐云2013-08-05 15:33
求给回复啊 !!!大神们。
#3
rjsp2013-08-05 15:39
看不懂,我瞎写一个
程序代码:
#include <iostream>
#include <iomanip>
using namespace std;

double Average( const int* s, size_t n )
{
    double avg = 0.0;
    for( size_t i=0; i!=n; ++i )
        avg += s[i];
    return avg/n;
}

void icount( const int* s, size_t n )
{
    size_t num = 0;
    for( size_t i=0; i!=n; ++i )
    {
        if( s[i] < 60 )
        {
            ++num;
            cout << "The number:" << i << ' ' << "The score:" << s[i] << '\n';
        }
    }
    cout << "The number of score under 60  is:" << num << endl;
}

int main()
{
    int t[] = { 56,87,78,98,97,26,45,92,85,46 };
    size_t n = sizeof(t)/sizeof(t[0]);

    cout << "The average score is: " << fixed << setprecision(2) << Average(t,n) << endl;

    icount( t, n );

    return 0;
}

#4
wp2319572013-08-05 15:41
int类型数组不能用'\0' 来确认结束
最好的办法就是像3楼那样 把数组长度作为实参 传到函数里去
1