求高手解答一个C++程序

来源:百度知道 编辑:UC知道 时间:2024/06/22 14:44:11
#include <iostream.h>
void main()
{
int score[10]={72,83,51,67,39,75,91,98,77,89};
int seg[5]={60,70,80,90,101};
int num[5]={0};
for(int i=0;i<10;i++){
int j=0;
while(score[i]>=seg[j]) j++;
num[j]++;
}
for(i=0;i<5;i++)
cout<<num[i]<<" ";
cout<<endl;
}

这个输出为2 1 3 2 2
为什么会这样?
特别那个num[j]++很不明白它的意思.
我运行过了.结果是一片空白的,为什么书上会出现那个答案

补充回答:你用的什么编译环境?
我在VC++6.0下,可以正常显示结果啊~!
*************************************

#include <iostream.h>
void main()
{
int score[10]={72,83,51,67,39,75,91,98,77,89}; //成绩单
int seg[5]={60,70,80,90,101}; //成绩段
int num[5]={0}; //含5个整型元素的数组,用来存放各成绩段的人数
for(int i=0;i<10;i++){ //遍历成绩单
int j=0; //成绩段下标从第一开始
while(score[i]>=seg[j]) j++; //遍历成绩单直到一个成绩大于seg[j]
num[j]++; //num[j] = num[j]+1,存放这个成绩段人数的值加一
}
for(i=0;i<5;i++) // 输出各成绩段人数
cout<<num[i]<<" ";
cout<<endl;
}

num[j]++
等于
num[j] = num[j]+1

这个程序就是简单的统计下各个分数段的人数,那第一个分数来举例:
72分大于60分,在while(score[i]>=seg[j])的时候符合条件,j+1,尝试下一等级,72分仍大于70分,while(score[i]>=seg[j])符合条件,j+1,但是72分小于80分,不符合条件,跳出while循环,然后在该分数段的计数器加一,就是num[j]++;这个的含义就上上面人说的,num[j]=num[j]+1,最后输出结果,稍微有点绕的地方是,最后的结果的含义是:不高于60分的人数 高于60分但不高于70分的人数 ……
你对一下数据,就应该明白了

上边将J赋值为0,num[j]++即在循环中每循环一次让数组中的数值向上加一个 依次相加求出数组中数值