2023/11/19 CSPOJ的水仙花数

1 篇文章 0 订阅
作者分享了在解决CSPOJ水仙花数问题时遇到的错误,涉及运算符优先级、循环嵌套变量管理和初始化问题。通过修正逻辑错误,学习到关键编程技巧:运算符顺序、独立变量使用和初始化时机。
摘要由CSDN通过智能技术生成

今天虽然发生的大事,但是生活还是一如既往的比较平稳的进行。十分感觉像做梦,但是又在朝目标不断前行着,就像艾伦说的“塔塔开,一字莫塔塔开”。

今天是学校的期中考试,但是还是要刷题的。看了下CSPOJ里面循环的题目,准备复习下水仙花数。但是敲完之后,我愣住了。

下面是第一次错误的代码

第一次写出来的水仙花错误代码 

这个代码是运行超时,由于我不能在COPSJ上看到自己错哪里了,索性在vs上cv。

提示的错误信息 

这个是信息是正确的,错在哪呢,还是等号运算符的先左还是先右的问题,对于i=temp,是把temp赋给i,但是temp没有初值呀,就算有初值,那也是不对的。

于是我在代码上找了自己问题,更注重在逻辑思维上,要是逻辑思维错了,整个程序崩盘确实很容易。

仔细看看,在for循环中,变量i是在变化的,但是在while中,变量i也是变化的,这导致了在while的条件里(i != 0) 有了可乘之机,就是在i = 0时结束while循环,但是 i = 0了,自然for循环跳出了。这样我就修改了代码,并且,sum初始化的位置也有问题,在每次for循环结束一次,sum的值都没有归零,所以sum==temp这个条件根本也就不能成立。

这是三个逻辑上的bug。

一下是修改后正确的代码。

 修改后正确的代码

这样能输出正确答案。

总结:1、对于=运算符,一定要搞清楚先后顺序。

           2、对于循环嵌套,尽量使用在每个循环里使用不同的变量,不要同一个变量。

           3、对于变量初始化,一定要思考后看看在哪初始化,这种逻辑错误一旦犯了就很难找出来,所以要在第一次编写源代码时想到并且相对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值