错题本:统计成绩的小程序

闲来无事,牛客刷题,题目是这样的:

描述

输入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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值