闲来无事,牛客刷题,题目是这样的:
描述
输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
数据范围:1≤n≤100 , 成绩使用百分制且不可能出现负数
输入描述:
两行,
第1行,正整数n(1≤n≤100)
第2行,n科成绩(范围0.0~100.0),用空格分隔。
输出描述:
输出一行,三个浮点数,分别表示,最高分,最低分以及平均分(小数点后保留2位),用空格分隔。
最后我的程序是这样的
在编写过程中,我犯了一些小毛病,特此拿出来与大家讨论,共同进步。
1.i的初始化。
程序中出现多个循环语句,因此变量i在每次循环前都需要初始化,否则除了第一个循环,后面的循环不满足i<n的条件,无法进入。
2.关于whlie中嵌套if语句的注意点。
刚开始关于比大小的程序我是这样写的
看出区别了吗?没错,i++的位置发生了变化。
那么错误写法会怎么样呢?
首先,min初始化为比上限大的101,随后与第一个数(例:54)比较,min大,进入if,min赋值为54,i加一变成1。
随后,min(54)与第二个数(例:76)比较,不满足if的条件,跳过,进入下一个循环。
呃...然后呢?
此时程序陷入了死循环,因为i++在if语句内部,跳过if也就跳过了i++,因此i保持1不变,于是min(54)一遍遍的与76比较,一遍遍跳过。但程序也不会报错,只是卡在那里无法输出。
这个错误告诉我们在循环内外对i的操作都要格外注意(不过后来想想好像用for就没这么多事了),以及发现问题时善用调试寻找bug。