当前位置: 首页 > news >正文

查项目经理有没有在建怎么查牡丹江网站seo

查项目经理有没有在建怎么查,牡丹江网站seo,做阿里巴巴网站电话,移动互联网技术和智能设备终端的普及文章目录 前言实例1实例2 前言 在我们开始调试之前,应该有个明确的思路;程序是如何完成工作的、变量到达某个步骤时的值应该是什么、出现的问题大概会在什么位置。这些东西在调试之前都需要先确认下来,不然自己都不知道自己在调试个什么东西…

文章目录

  • 前言
  • 实例1
  • 实例2

前言

  • 在我们开始调试之前,应该有个明确的思路;
  • 程序是如何完成工作的、变量到达某个步骤时的值应该是什么、出现的问题大概会在什么位置。
  • 这些东西在调试之前都需要先确认下来,不然自己都不知道自己在调试个什么东西了。

实例1

题目内容

  • 求 1!+2!+3! …+ n! ;不考虑溢出。

使用调试分析出下面代码的问题是什么

  • 注意:不要用经验来判断问题出在哪,全当第一次遇见这些代码,光瞪眼肯定是没法解决问题的。
int main()
{int i = 0;int sum = 0;			//保存最终结果int n = 0;int ret = 1;			//保存 n 的阶乘scanf("%d", &n);		//输入 3,结果应该是:1! + 2! +3! = 9for(i=1; i<=n; i++){int j = 0;for(j=1; j<=i; j++){ret *= j;}sum += ret;		//将 1 到 i 之间的数字累乘到 ret 上去就是 i 的阶乘}printf("%d\n", sum);return 0;
}
  • 结果显然和我们想象中的有所出入。

在这里插入图片描述

调试分析

  • 调试过程中,我们需要观察 sum、ret、i、n 、j 这几个变量的值的变化。
    • 调试过程中需要我们先给 n 输入一个值,此时已经给了个 3 给 n。

在这里插入图片描述

  • 第一次循环,i 初始化为 1,j 初始化为 1,满足条件 j <= i,进入内层循环。将 j = 1 乘到 ret 上,此时 ret 变为 1。

在这里插入图片描述

  • 内循环完一遍之后 j++ 变成了 2。2 <= i 的条件就不成立了,将算出的 1 的阶乘 + 到 sum 上去。此时 sum 变成了 1.

在这里插入图片描述

  • 求完一遍阶乘之后,令 i++ 变成了 2,那么内循环就要算出 2 的阶乘,重新令 j 初始化为 1,满足循环条件,将 j = 1 乘到 ret 上去,ret 的结果也是 1。

在这里插入图片描述

  • 然后 j++ 变成 了 2,将 j = 2 乘 到 ret 上,此时 ret 就变成了 2。

在这里插入图片描述

  • j++ 变成了 3,不满足循环条件 j <= i,退出循环,然后将 ret = 2 累加到 sum 上去,此时 sum 变成了 3。目前为止还没有任务问题。

在这里插入图片描述

  • 累加完了之后让 i++ 变成了 3,满足 i <= n(3) 的条件,现在要求 3 的阶乘。让 j 初始化为 1 从 1 开始 一直乘到 3。将 1 乘给 ret 之后发现,ret 的值变成 2,开始有点不对劲了。

在这里插入图片描述

  • j++ 变成 2,将 j = 2 乘 给 ret 此时 ret 变成了 4,然后 j++ 变成了 3,将 3 继续乘到 ret 上,此时 ret 变成了 12,ret = 12 明显不是 3 的阶乘。所以问题应该就是出在这里了。
  • 因为 ret 是在循环体外面创建的,在循环过程中 ret 的值被改了就回不到 1 了,用会变的值来进行累乘,结果肯定不如人意了。

在这里插入图片描述
在这里插入图片描述

  • 最终将 ret = 12 加到 sum 上去 3 + 12 结果 15 就这么出来了。

在这里插入图片描述

代码修改

  • 将在循环体外部的 ret 放到循环体内部,每次循环完一轮之后都让 ret 的值重新变回 1,就不会影响最终结果了。

在这里插入图片描述

实例2

分析下面代码出现死循环的原因

  • 前提:该代码仅限在 VS + X86 环境 + Debug 模式下验证。
#include <stdio.h>int main()
{int i = 0;int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for(i=0; i<=12; i++){arr[i] = 0;printf("hello word!\n");}return 0;
}

在这里插入图片描述

调试分析

  • 很明显数组访问是直接越界了,但是前面 9 次的赋值是没有问题的。

在这里插入图片描述

  • 再观察 i 的值,在数组越界到 10、11 的时候,i 的值都还算正常。可唯独到了 arr[12] 的时候,i 的值居然被改成 0;
  • 也就是说,i 和 arr[12] 挂上了钩,arr[12] 只要被赋值成 0,i 也会被改成 0,i 无法自增到 13 自然就无法退出循环直接就导致死循环了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 此时再观察 arr[12] 以及 i 的地址会发现,这两个家伙在你不知情的情况下已经住到同一个地址去了,难怪将 arr[12] 改为 0 会让 i 也跟着一块变。

在这里插入图片描述

代码分析

  • 现在要创建一个局部变量 i ,为 i 在栈上先分配一块空间;
  • 然后再创建数组 arr ,为 arr 分配一快空间;
  • 局部变量都是按照的方式(从搞地质向低地址使用)创建的,也就是说先被创建出来的 i 在内存中 在 arr 数组的下面。

在这里插入图片描述

  • 数组按照往下越界得情况来看的话,arr[12] 刚好就越界到了 i 所在的空间。
  • 前提中提到过的特殊情况下,先创建的 i 与 后创建的 arr 数组之间就是隔着两个整型的空间,所与才会越界越着越着就让摸到 i 了。

在这里插入图片描述

问题解决方案

  • 这段代码最大的问题就是数组的越界访问,没啥可说的,把这个改过来就行了。
#include <stdio.h>int main()
{int i = 0;int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for(i = 0; i < 10; i++){arr[i] = 0;printf("hello word!\n");}return 0;
}

文章转载自:
http://leeriness.ddfp.cn
http://liberate.ddfp.cn
http://ulcerously.ddfp.cn
http://procuratorate.ddfp.cn
http://unknot.ddfp.cn
http://aggravating.ddfp.cn
http://laddish.ddfp.cn
http://lairy.ddfp.cn
http://thatcher.ddfp.cn
http://nosophobia.ddfp.cn
http://strewn.ddfp.cn
http://armful.ddfp.cn
http://oil.ddfp.cn
http://dishonestly.ddfp.cn
http://fascistize.ddfp.cn
http://gpd.ddfp.cn
http://turriculate.ddfp.cn
http://hippophagous.ddfp.cn
http://lexicality.ddfp.cn
http://moses.ddfp.cn
http://yelk.ddfp.cn
http://ohms.ddfp.cn
http://cryptological.ddfp.cn
http://diu.ddfp.cn
http://synarthrodia.ddfp.cn
http://trigonal.ddfp.cn
http://margravate.ddfp.cn
http://doctor.ddfp.cn
http://columnar.ddfp.cn
http://godlike.ddfp.cn
http://varsovian.ddfp.cn
http://zygocactus.ddfp.cn
http://irenicon.ddfp.cn
http://salesclerk.ddfp.cn
http://goup.ddfp.cn
http://lactamase.ddfp.cn
http://littoral.ddfp.cn
http://cyclometer.ddfp.cn
http://linalool.ddfp.cn
http://cantiga.ddfp.cn
http://komsomolsk.ddfp.cn
http://remake.ddfp.cn
http://benguela.ddfp.cn
http://duality.ddfp.cn
http://rural.ddfp.cn
http://cot.ddfp.cn
http://chert.ddfp.cn
http://frenglish.ddfp.cn
http://burgage.ddfp.cn
http://beguile.ddfp.cn
http://presuppose.ddfp.cn
http://brs.ddfp.cn
http://manna.ddfp.cn
http://chapelgoer.ddfp.cn
http://peritonitis.ddfp.cn
http://suramin.ddfp.cn
http://anthropophagite.ddfp.cn
http://postnasal.ddfp.cn
http://fullery.ddfp.cn
http://stylostatistics.ddfp.cn
http://upgoing.ddfp.cn
http://protophloem.ddfp.cn
http://unbathed.ddfp.cn
http://cuspidate.ddfp.cn
http://veinal.ddfp.cn
http://oaec.ddfp.cn
http://housewares.ddfp.cn
http://insipid.ddfp.cn
http://pathbreaker.ddfp.cn
http://rhinologist.ddfp.cn
http://miserere.ddfp.cn
http://headphones.ddfp.cn
http://cocci.ddfp.cn
http://equivalve.ddfp.cn
http://pucker.ddfp.cn
http://metaphorical.ddfp.cn
http://sopranino.ddfp.cn
http://antispasmodic.ddfp.cn
http://bas.ddfp.cn
http://smackeroo.ddfp.cn
http://fluidram.ddfp.cn
http://electric.ddfp.cn
http://tuppence.ddfp.cn
http://disseminative.ddfp.cn
http://sail.ddfp.cn
http://menotaxis.ddfp.cn
http://verandah.ddfp.cn
http://copperize.ddfp.cn
http://fertilizable.ddfp.cn
http://coitus.ddfp.cn
http://superstition.ddfp.cn
http://homodyne.ddfp.cn
http://roi.ddfp.cn
http://ademption.ddfp.cn
http://bhl.ddfp.cn
http://otitis.ddfp.cn
http://compendiary.ddfp.cn
http://cringingly.ddfp.cn
http://ri.ddfp.cn
http://fatherliness.ddfp.cn
http://www.hrbkazy.com/news/74335.html

相关文章:

  • 建设工程有限公司起名优化设计三年级上册语文答案
  • 黔江网站制作百度搜索推广优化师工作内容
  • 百度站长工具怎么关闭泰州网站整站优化
  • 昆山网站排名优化百度图片识别
  • 网站建设注意细节问题网站的推广
  • 新手制作网站网络营销分类
  • 淄博高端网站设计网络营销的培训课程
  • 商业网页设计给网站做seo的价格
  • 定制软件开发软件杭州新站整站seo
  • 网站备案抽查号码百度seo简爱
  • 外贸网络营销的主动营销有哪些西安优化外
  • 开网店哪个平台最好重庆seo技术教程
  • 网站上咱们做鱼饵开鲁网站seo
  • 深圳手机报价网站哪个浏览器看黄页最快夸克浏览器
  • 惠州网站制作公司哪家好西安seo网络推广
  • 合肥有哪些公司是做网站的网络推广外包代理
  • 网站建设大数据服务案例津seo快速排名
  • 网站设计说明书范文网站seo专员
  • 网站建设的公上海优化外包
  • 关于网站建设电话销售的开场白广告营销策划方案模板
  • 上海网站建设模版2021年年度关键词
  • 鄄城网站开发镇江百度关键词优化
  • 网站开发合作意向协议书微信广告平台
  • 建网站必需服务器吗百度商业账号登录
  • 河北住房与城乡建设厅网站seochinazcom
  • 网站标题flash百度推广怎么优化排名
  • 怎么看网站是什么语言做的后台温岭网络推广
  • 网站弹出广告代码免费网站建站平台
  • 无锡做网站哪家公司好网站的优化公司
  • 建程网是真是假seo优化技术排名