问与答 (随课程进展不断更新) |
---|
日期 | 问题和回答 |
2005.10.19 | 有的时候比如用动态顺序表时,如果在定义中将表改为指针,每次用一个strlen函数可以得到长度,
这样就可以避免占用内存了。 还有,您能在网上贴出用vc 编程时常见的错误提示的意思是什么,以及原因是什么吗?比如: unexpected end of file; the address cannot be written ...这样我们可以很快查到错误, 有时看不懂意思是什么。 ————Chao Wang 答:用动态顺序表也同样需要内存,你需要动态分配空间保存表的内容。
错误信息在错误窗口显示,选择错误信息行后按F1,系统会给出提示和实例。你去看它们吧。
我找不到完整的一个说明文件,各种错误信息有几千种,无法一一解释。
unexpected end of file
the address cannot be written |
2005.10.14 | 我写了一个关于火车进站的程序:有五辆火车按顺序等待进站,它们可以随意选择出站或留下
来,但先留下来的火车必须等待后面留下来的车离开后才可以出站。问共有多少种出站情况? 程序发现了所有的可能,但不能正确输出每种可能。希望老师能帮我修改一下。程序可以运行。 文件rrecord.txt中是输出结果,以及我的一些疑惑和解释,希望老师先看这个。 --宋承根
答:程序太不清楚,很难理解。你不给我解释,我很难理解你程序里的想法,找出问题就
更困难了。我也没理解可以“发现所有的可能”,但“不能输出每种可能”是什么意思? |
2005.10.13 | 两个算法的时间复杂性都是O(n^k),是否就认为它们同样
优秀(不考虑空间复杂性)?如果无法改进算法的O(n^k)复杂性,改进其常量因子也有意义吗?
--周帆(00401068) 从理论上说,两个算法同样优秀。但如果一个算法比另一个快100倍(常量),从实践的观点看 就会认为它们的价值很不一样。改进常量因子在实践中当然很有价值。试想如果我们能把人的 寿命延长一倍,且不说是100倍了。 |
2005.10.10 | 我处理在文件中查找字符串的方法是把文件内容全部放到目标串中再进行模式匹配,而文件很大时
这样的目标串不能做出来(即我的程序运行时函数createformlist(创建并初始化一个PSeqString)
会显示overflow,即在某次用realloc重新分配空间时失败),处改用c++外,有无别的解决办法?
我总觉得把整个文件放在一个串里似乎不太好。 李蔚明(00401123) 2005.10.10
答:第一个问题与使用C语言或者C++无关,和你用的C系统有关。如果你用的是TURBO C,你试试修
改一下系统的 Options/Compler/Model。原来的默认设置(我记得)是Small,你把它改为 Large
就能有比较大的数据空间了(1024K,我记得不准确了,你可以查看TURBO C的联机帮助)。 |
2005.10.9 | 用realloc 函数时分配的空间在哪里?是否占用了原有
的空间? Chao Wang 答:关于realloc究竟在哪里分配的问题,完全由实现标准库的程序决定。它可能在 原来的地方扩充,也有可能全部另行分配(想想,如果现在要扩大存储块,而后面 的地方已经被分配出去另有他用了,你怎么可能在原位扩充呢?)。具体情况我们 不必考虑,从抽象的层次上理解其功能就够了。 |
2005.10.9 | 裘老师:
我在做上机选做题四时,尝试用记时的方法比较两种算法的时间效率,可每次运
行时得到的时间都不一样,而且有一次朴素算法所用时间比无回溯型还少,请问
其原因? 李蔚明(00401123) 2005.10.8
答:实际程序的运行时间受各种环境因素影响,因为它不是在真空中运行,这很自
然。如果你在只安装了DOS系统的机器上运行程序,时间的变化可能就比较小。
Windows 是非常复杂的系统,有很多系统程序和你的程序一起在环境中运行,它们
会影响你程序的运行时间。人们在做时间测试时,常常做许多次后求平均值。 |
2005.10.7 | 动态的数组应该用那种方式进行扩大才能更有效?-王超 答:你所说的有效是什么意思?存储空间的有效利用,还是时间上的高效? 在数据结构网页中有《从问题到程序》一书的“动态存储分配”一节,其中有关于这个问题的 详细讨论。你可以到那里去看。如果还有问题,再提出来。 |
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。
其他使用需得到作者许可。 (最新更新: 2015-11-28 ) |