使用udebug检查一下输入(或者找讨论区里给的大样例提交自己的程序,看看是否AC),并且检查一下输入输出的顺序(有可能等你输完某个数据才显示Please enter之类的信息)。讨论区里有翻译,可供参考。
如果程序一直崩溃,请检查是否有死循环或者读入错误问题。
难度大小取决于学生信息的存储方式和各部分内容的实现方式
不需要对班级人数是否为0进行检查,不管你最终程序输出的average是0.00,nan还是-nan(或者-1#.j等等)
另外,写不写函数,用不用全局变量,用不用结构体不是导致本题WA的根本原因。一直WA的不用从这方面找原因了。
结构体数组长度120到200之间够用,字符串长度11即可。编译器用C++11亲测可行。
参照udebug或者讨论区给的大样例。
当进行Remove操作时,只检查输入的是否为0,然后遍历全部学生,寻找可能匹配的SID或者name。而不是检查输入的是否为0,输入的是SID,输入的是name三种情况。这样可以简化代码行数,甚至我的程序就是不这样才WA的
如果使用数组来存学生信息,在定义数组的时候注意初始化。
无论是删去当前数组中某一个元素,还是通过平移的方式“挪动”数组,都是可行的。只不过,前者需要将当前元素再初始化一遍,在Show Statistics的时候加一个判断该元素是否是已删除元素的if语句,后者则需要针对平移调整一下循环变量和计数器的更新,并且将最后一个元素初始化。Remove方式的不同会影响到Show Statistic。
举个初始化例子
student[cnt--] = student[MAX_SIZE-1];
//这里的MAX_SIZE大于100
初始化方式不唯一。用memset函数理论可行,但不确保sizeof的运算结果是否为理论值。
排名可以每询问一次排一遍rank。也可以只得到询问学生的rank。
学生的SID, CID, 名字和成绩
学生的排名,平均分,总成绩(建议还是把总成绩存起来,方便输出),排名,输入的次序
把每个功能写成函数,把每个函数的部分功能写成子函数。写完一个函数后记得测试一下。用字符串数组存储课程名字。计数器和学生信息可以用全局变量来存。
感谢观看,祝各位尽早AC!