c语言break不好用,这个break 用得对吗?该怎么处理

这个break 用得对吗?

下面这个程序是要计算输入的奇数个数及平均数,偶数个数及平均数。输入0时终止

#include "stdafx.h"

#include "stdio.h"

#include "ctype.h"

int main(void)

{

int a;

int oddcount = 0;

int evencount = 0;

int oddsum = 0;

int evensum = 0;

while(scanf("%d", &a) == 1 )

{

if(a == 0)

{

break;

}

if(a%2 == 0)

{

evencount++;

evensum = evensum+a;

}

else

{

oddcount++;

oddsum = oddsum+a;

}

}

printf("There are %d odds and the average is %f; and there are %d evens and the average is %d.\n", oddcount, (float)oddsum/oddcount, evencount, evensum/evencount);

return 0;

}

我的问题还有为什么第一个数直接输入0时会有异常检查?

另外,对于终止的条件是用break好, 还是在while条件里直接加上a!=0好?

分享到:

更多

------解决方案--------------------

break没问题,但你要保证分母不为0!

------解决方案--------------------

引用:break没问题,但你要保证分母不为0!正解

------解决方案--------------------

什么意思?异常检查?

“另外,对于终止的条件是用break好, 还是在while条件里直接加上a!=0好?”

语义不同,while的语义是满足了条件后进入循环体代码

如果放在循环体里面,那么条件是scanf的返回值为1

如果放在条件里面,那么条件变成复合条件,看你感觉怎样表达的语义更好咯

------解决方案--------------------

break用的没有问题,至于代码是否达到你个人预期的那样,这个就看你自己的想法了。

------解决方案--------------------

break用法正常,你没有考虑到输入安全性问题,假如你输入的不是数字时候,会出现什么状况了。你可以去测试下这个问题。

------解决方案--------------------

先输入0后面输出里分母是0

------解决方案--------------------

有除法操作就要小心分母为0的情况

102449129.gif

------解决方案--------------------

各位,是分子为0的情况。

在(float)oddsum/oddcount, evensum/evencount中,oddcount和eventcount可能为零,

建议在打印输出前,做一次检测。

------解决方案--------------------

if(oddcount != 0 && evencount !=0)

{

printf("There are %d odds and the average is %f;"

"and there are %d evens and the average is %d.\n",

oddcount, (float)oddsum/oddcount, evencount, evensum/evencount);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值