本文主要是介绍C语言如何避免循环中的初值错误问题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
在⼀些进⾏累加、累乘、累减的计算中,要对累积的变量赋初值,然后进⾏循环,不断地累积计算。但是当忘记为累积变量赋初值,或者赋初值的位置不当时,便会出现累积错误,应如何避免这种错误呢?
二、解答
⾸先分析⼀个例⼦,1~100之间的整数的累计和,代码如下:
#include <stdio.h>
int main()
{int i = 1;int sum = 0;while (i <= 100){sum = sum + i;i++;}printf("Sum of first 100 natural numbers is %d\n", sum);return 0;
}
在程序代码中,sum 表示累加计算的结果,i 表示1到100 间的数字。为sum 赋值为0,i 赋值为1。使⽤ while 语句判断 i 是否⼩于等于100,如果条件为真,则执⾏跟着的语句块中的内容;如果条件为假,则跳过语句块执⾏后⾯的内容。在语句块中,总和 sum等于之前的计算的总和加上现在 i 表示的数字,完成累加操作。
程序运⾏结果如下所示。
Sum of first 100 natural numbers is 5050
假设将累加变量的赋初值语句:
int sum = 0;
换成:
int sum;
会出现什么现象呢?运⾏程序,改变程序后的结果如下所示。
Sum of first 100 natural numbers is -858988410
通过结果图可以看到,这不是正确的结果,由于 sum 的值未赋值,所以它的值不确定,导致最后的结果也不正确。
解决这⼀问题的办法就是将累加变量赋值,假设将代码改为:
#include <stdio.h>
int main()
{int i = 1;int sum;while (i <= 100){sum = 0;sum = sum + i;i++;}printf("Sum of first 100 natural numbers is %d\n", sum);return 0;
}
程序运⾏结果如下所示。
Sum of first 100 natural numbers is 100
很明显,改变后的程序不对,为什么会这样呢?这是由于将累加变量的赋值语句放在了循环体中,sum 实际并没有累加,当第⼆次执⾏循环时,sum 的值⼜变为0,所以加 的是i最后⼀次的值,最后才会出现结果为100 的情况。
三、总结
从上⾯的学习可以了解到,在循环结构中,若累积变量未赋初值或者位置不当,将会 导致累积错误,不能产⽣预期的效果。为了避免这种情况的发⽣,⼀定要为累积变量赋初 值,且在循环体内不断改变它的值。
这篇关于C语言如何避免循环中的初值错误问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!