C语言如何避免循环中的初值错误问题?

2024-03-10 09:28

本文主要是介绍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语言如何避免循环中的初值错误问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793788

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

vue+elementui--$message提示框被dialog遮罩层挡住问题解决

最近碰到一个先执行this.$message提示内容,然后接着弹出dialog带遮罩层弹框。那么问题来了,message提示框会默认被dialog遮罩层挡住,现在就是要解决这个问题。 由于都是弹框,问题肯定是出在z-index比重问题。由于用$message方式是写在js中而不是写在html中所以不是很好直接去改样式。 不过好在message组件中提供了customClass 属性,我们可以利用