查看完整版本: 课程答疑与学习交流板块帖子整理归档

TNTleft 2008-10-5 00:02

课程答疑与学习交流板块帖子整理归档

在把课程答疑与学习交流子版有关于C++和Windows程序设计的帖子总体浏览了一下之后
将一些自己认为对大家有帮助的帖子整理出来,做初步的归档。
由于有些帖子涉及的问题很难笼统的归为哪一类,我也着实头疼了一把
但是我还是迫不及待的将这些帖子贴出来,并且将所涉及的内容尽量具体化以方便各位查阅和学习

初步更新完

#2            Unicode、字符串问题、进程和线程、对小画板有益的几则

#3            sdk和mfc中的控件、数据库、sdk和mfc其他问题

#4            C++stl 、 c++模板问题、C++学习笔记、C++其他问题

#5\6\7      C\C++考试试题

[[i] 本帖最后由 TNTleft 于 2008-10-5 00:22 编辑 [/i]]

TNTleft 2008-10-5 00:06

[b][size=6]Unicode[/size][/b]
[url=http://bbs.tongji.net/thread-140082-1-95.html]http://bbs.tongji.net/thread-140082-1-95.html[/url]  判断文件是否为unicode
[url=http://bbs.tongji.net/thread-140793-1-94.html]http://bbs.tongji.net/thread-140793-1-94.html[/url]  omale的toUnicode函数,在3楼。

[font=宋体][size=6][color=#000000]字符串问题[/color][/size][/font]
[font=宋体][size=14pt][url=http://bbs.tongji.net/thread-366461-1-16.html][size=11pt][color=#800080]http://bbs.tongji.net/thread-366461-1-16.html[/color][/size][/url] [/size][font=宋体][size=9pt][color=#000000]字符串完全指南[/color][/size][/font][/font]
[font=宋体][font=宋体][size=9pt][color=#000000][/color][/size][/font][/font]
[font=宋体][font=宋体][size=9pt][font=宋体][size=6][color=#000000]进程、线程[/color][/size][/font][/size][/font][/font]
[font=宋体][font=宋体][size=9pt][font=宋体][url=http://bbs.tongji.net/thread-126986-1-103.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-126986-1-103.html[/color][/size][/font][/url][font=Calibri][size=3][color=#000000] [/color][/size][/font][color=#000000][font=宋体][size=3]判断[/size][/font][font=宋体][size=9pt]所有的窗口是否属于这个进程[/size][/font][/color]
[color=#000000]
[/color]
[color=#000000]
[/color][size=9pt][font=宋体][color=#000000][size=6]对小画板有益的几则[/size][/color][/font][/size][/font][/size][/font][/font]
[font=宋体][font=宋体][size=9pt][font=宋体][size=9pt][font=宋体][color=#000000][font=宋体][size=6][size=12pt][url=http://bbs.tongji.net/thread-191821-1-27.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-191821-1-27.html[/color][/font][/size][/url][/size][font=宋体][size=12pt]看四楼的回帖[/size][/font][size=12pt][font=Calibri] [/font][/size][font=宋体][size=12pt]对于[/size][/font][size=12pt][font=Calibri]sdk[/font][/size][font=宋体][size=12pt]全局变量存储的建议,很值得参考[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-516824-1-7.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-516824-1-7.html[/color][/font][/size][/url][font=Calibri] [/font][color=black][url=http://bbs.tongji.net/thread-516824-1-1.html][color=black][font=Calibri]Windows SDK [/font][/color][color=black][font=宋体]编程调试[/font][/color][color=black][font=Calibri] TRACE for SDK[/font][/color][/url][font=Calibri] [/font][/color][/size]
[size=12pt][url=http://bbs.tongji.net/thread-516944-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-516944-1-6.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]窗口透明详解[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-519610-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-519610-1-6.html[/color][/font][/size][/url][font=Calibri] [/font][color=black][url=http://bbs.tongji.net/thread-519610-1-1.html][color=black][font=宋体]鼠标在窗口左或上的时候[/font][/color][color=black][font=Calibri] [/font][/color][color=black][font=宋体]画出图形都在下方的原因和解决办法[/font][/color][/url][font=Calibri] [/font][/color][/size]
[size=12pt][url=http://bbs.tongji.net/thread-519821-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-519821-1-6.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]窗口闪烁解决[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-520117-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-520117-1-6.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]窗口缩放[/size][/font][size=12pt][font=Calibri]demo[/font][/size]
[size=12pt][url=http://bbs.tongji.net/thread-520484-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-520484-1-6.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]进程通信[/size][/font][size=12pt][font=Calibri]demo[/font][/size]
[size=12pt][url=http://bbs.tongji.net/thread-540336-1-5.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-540336-1-5.html[/color][/font][/size][/url][font=Calibri] InvalidateRect[/font][/size][font=宋体][size=12pt]和[/size][/font][size=12pt][font=Calibri]updatewindow[/font][/size][font=宋体][size=12pt]区别[/size][/font][/size][/font][/color][/font][/size][/font][/size][/font][/font]
[font=宋体][font=宋体][size=9pt][font=宋体][size=9pt][font=宋体][color=#000000][font=宋体][size=6][size=3][/size][size=12pt][/size]
[size=3][font=Calibri]ps:[/font][font=宋体]特此感谢一下王鹏助教吧,帮我们准备了那么多[/font][font=Calibri]demo[/font][font=宋体]。[/font][/size]

[/size][/font][/color][/font][/size][/font][/size][/font][/font]

TNTleft 2008-10-5 00:09

[size=6][color=#000000][font=Calibri]Sdk[/font][font=宋体]和[/font][font=Calibri]mfc[/font][font=宋体]中控件[/font][/color][/size]
[size=6][color=#000000][font=宋体][url=http://www.vckbase.com/document/viewdoc/?id=1069][font=Calibri][size=3][color=#800080]http://www.vckbase.com/document/viewdoc/?id=1069[/color][/size][/font][/url][font=Calibri][size=3] [/size][/font][font=宋体][size=3]制作真彩色工具条[/size][/font]
[url=http://bbs.tongji.net/thread-143237-1-93.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-143237-1-93.html[/color][/size][/font][/url][font=Calibri][size=3] ListBox[/size][/font][size=3][font=宋体]中设置水平滚动条,看[/font][font=Calibri]6[/font][font=宋体]楼。[/font][/size]
[url=http://bbs.tongji.net/thread-190443-1-71.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-190443-1-71.html[/color][/size][/font][/url][font=Calibri][size=3] [/size][/font][size=3][font=宋体]使用[/font][font=Calibri]Edit[/font][font=宋体]控件实现视图区输入,看[/font][font=Calibri]4[/font][font=宋体]楼[/font][/size]
[url=http://bbs.tongji.net/thread-212120-1-60.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-212120-1-60.html[/color][/size][/font][/url][font=Calibri][size=3] ToolBar[/size][/font][size=3][font=宋体]里添加[/font][font=Calibri]Combobox[/font][font=宋体]控件,[/font][font=Calibri]2[/font][font=宋体]楼。[/font][/size]
[url=http://bbs.tongji.net/thread-216374-1-56.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-216374-1-56.html[/color][/size][/font][/url][font=Calibri][size=3] [/size][/font][size=3][font=宋体]给[/font][font=Calibri]CBitmapButton[/font][font=宋体]贴位图,注意看[/font][font=Calibri]2[/font][font=宋体]楼和[/font][font=Calibri]4[/font][font=宋体]楼[/font][/size]
[url=http://bbs.tongji.net/thread-219036-1-55.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-219036-1-55.html[/color][/size][/font][/url][font=Calibri][size=3] [/size][/font][size=3][font=宋体]在视图中嵌入对话框,看[/font][font=Calibri]5[/font][font=宋体]、[/font][font=Calibri]6[/font][font=宋体]、[/font][font=Calibri]7[/font][font=宋体]楼。[/font][/size][/font][/color][/size]
[size=6][color=#000000][font=宋体][size=3][/size]
[size=3][font=宋体][font=宋体][size=6]数据库访问[/size][/font][/font][/size]
[size=3][font=宋体][size=12pt][url=http://bbs.tongji.net/thread-316608-1-24.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-316608-1-24.html[/color][/font][/size][/url][font=Calibri] Ado[/font][/size][font=宋体][size=12pt]的一些资源链接[/size][/font][size=12pt][/size]
[font=Calibri][/font]
[size=6][font=Calibri]sdk[/font][font=宋体]、[/font][font=Calibri]mfc[/font][font=宋体]其他问题[/font][/size][/font][/size]
[size=3][font=宋体][url=http://bbs.tongji.net/thread-163161-1-79.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-163161-1-79.html[/color][/font][/url][font=Calibri] [/font][font=宋体]此贴链接到[/font][font=Calibri]csdn[/font][font=宋体],关于[/font][font=Calibri]vc[/font][font=宋体]编程经验。此内容甚巨,本来想一并整理了,后来发现工作量实在太大。有兴趣的可以去翻翻,内容还是很实用的。[/font]
[url=http://bbs.tongji.net/thread-147514-1-89.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-147514-1-89.html[/color][/font][/url][font=Calibri] [/font][font=宋体]使用[/font][font=Calibri]carchive[/font][font=宋体]读文件判断是否读到尾。[/font]
[url=http://bbs.tongji.net/thread-142709-1-84.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-142709-1-84.html[/color][/font][/url][font=Calibri] CFileDialog[/font][font=宋体]多文件导入问题[/font][font=Calibri] [/font][font=宋体],[/font][font=Calibri]8[/font][font=宋体]楼代码可用。[/font]
[url=http://bbs.tongji.net/thread-165554-1-79.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-165554-1-79.html[/color][/font][/url][font=Calibri] [/font][font=宋体]使用[/font][font=Calibri]api[/font][font=宋体]切分窗口,[/font][font=Calibri]omale[/font][font=宋体]给出实现思路。[/font]
[url=http://bbs.tongji.net/thread-168067-1-76.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-168067-1-76.html[/color][/font][/url][font=Calibri] hinstance[/font][font=宋体]的解释,看[/font][font=Calibri]5[/font][font=宋体]楼户[/font][font=Calibri]sir[/font][font=宋体]的回帖吧。[/font]
[url=http://bbs.tongji.net/thread-192078-1-72.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-192078-1-72.html[/color][/font][/url][font=Calibri] [/font][font=宋体]双击选中直线,看[/font][font=Calibri]2[/font][font=宋体]楼提供的几种思路,对小画板有帮助。[/font]
[url=http://bbs.tongji.net/thread-189152-1-72.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-189152-1-72.html[/color][/font][/url][font=Calibri] [/font][font=宋体]实现两个[/font][font=Calibri]bmp[/font][font=宋体]的复制,看[/font][font=Calibri]4[/font][font=宋体]楼提供的两则思路[/font]
[url=http://bbs.tongji.net/thread-180423-1-71.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-180423-1-71.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于户[/font][font=Calibri]sir[/font][font=宋体]那个封装窗口类的讨论[/font]
[url=http://bbs.tongji.net/thread-220792-1-54.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-220792-1-54.html[/color][/font][/url][font=Calibri] [/font][font=宋体]对[/font][font=Calibri]dll[/font][font=宋体]的感性认识(这个标题好!!!)[/font]
[size=12pt][url=http://bbs.tongji.net/thread-294684-1-27.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-294684-1-27.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]出自户[/size][/font][size=12pt][font=Calibri]sir[/font][/size][font=宋体][size=12pt]上课讲义的一道练习(但是我没找到),应该是一种函数调用机制在[/size][/font][size=12pt][font=Calibri]7[/font][/size][font=宋体][size=12pt]楼那个版本的基础上,应该不难实现出对于参数和返回值的处理[/size][/font][size=12pt][/size]
[/font][/size]

[/font][/color][/size]

TNTleft 2008-10-5 00:12

[size=6][color=#000000][font=Calibri]Stl[/font][font=宋体]相关[/font][/color][/size]
[url=http://bbs.tongji.net/thread-129237-1-101.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-129237-1-101.html[/color][/size][/font][/url][font=Calibri][size=3][color=#000000] [/color][/size][/font][size=3][color=#000000][font=宋体]文件流对象在读到[/font][font=Calibri]eof[/font][font=宋体]后若要在使用,需要[/font][font=Calibri]clear [/font][font=宋体]后再使用。看[/font][font=Calibri]2[/font][font=宋体]、[/font][font=Calibri]3[/font][font=宋体]楼代码和解释。[/font][/color][/size]
[url=http://bbs.tongji.net/thread-128472-1-101.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-128472-1-101.html[/color][/size][/font][/url][font=Calibri][size=3][color=#000000] c++[/color][/size][/font][size=3][color=#000000][font=宋体]中输出左对齐,看[/font][font=Calibri]8[/font][font=宋体]楼代码[/font][/color][/size]
[url=http://bbs.tongji.net/thread-131471-1-99.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-131471-1-99.html[/color][/size][/font][/url][font=Calibri][size=3][color=#000000] cin[/color][/size][/font][size=3][color=#000000][font=宋体]在读到非法字符后要清楚[/font][font=Calibri]badbit[/font][font=宋体],这种问题问的挺多,看[/font][font=Calibri]10[/font][font=宋体]楼解释。[/font][/color][/size]
[size=3][color=#000000][font=Calibri]http://bbs.tongji.net/thread-144326-1-92.html [/font][font=宋体],[/font][font=Calibri] [/font][font=宋体]看[/font][font=Calibri] 3[/font][font=宋体]楼,对[/font][font=Calibri]5[/font][font=宋体]种[/font][font=Calibri]iterator[/font][font=宋体]的简单介绍[/font][/color][/size]
[url=http://bbs.tongji.net/thread-158114-1-75.html][font=Calibri][size=3][color=#800080]http://bbs.tongji.net/thread-158114-1-75.html[/color][/size][/font][/url][font=Calibri][size=3][color=#000000] [/color][/size][/font][size=3][color=#000000][font=宋体]设计自己的函数对象,使得可以用[/font][font=Calibri]bind2nd[/font][font=宋体]绑定[/font][/color][/size]
[size=3][color=#000000]
[/color][/size]
[size=3][color=#000000]
[/color][/size]
[size=3][color=#000000][font=宋体][size=6][font=Calibri]C++[/font][font=宋体]模板问题[/font][/size][/font][/color][/size]
[size=3][color=#000000][font=宋体][size=12pt][url=http://bbs.tongji.net/thread-321247-1-23.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-321247-1-23.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]窥视一下模板特化[/size][/font]


[font=宋体][size=12pt][size=6][font=Calibri]C++[/font][font=宋体]学习笔记[/font][/size][/size][/font][/font][/color][/size]
[size=3][color=#000000][font=宋体][font=宋体][size=12pt][url=http://bbs.tongji.net/thread-174277-1-74.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-174277-1-74.html[/color][/font][/url][font=Calibri] C++[/font][font=宋体]小花园[/font]
[url=http://bbs.tongji.net/thread-172660-1-73.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-172660-1-73.html[/color][/font][/url][font=Calibri] C++ Primer[/font][font=宋体]笔记[/font]
[size=12pt][url=http://bbs.tongji.net/thread-281772-1-29.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-281772-1-29.html[/color][/font][/size][/url][font=Calibri] kevin[/font][/size][font=宋体][size=12pt]笔记[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-277817-1-29.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-277817-1-29.html[/color][/font][/size][/url][font=Calibri] Dash[/font][/size][font=宋体][size=12pt]笔记[/size][/font][size=12pt][/size]

[size=6][font=Calibri]C++[/font][font=宋体]其他问题[/font][/size][/size][/font][/font][/color][/size]
[size=3][color=#000000][font=宋体][font=宋体][size=12pt][url=http://bbs.tongji.net/thread-123962-1-105.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-123962-1-105.html[/color][/font][/url][font=Calibri] c++[/font][font=宋体]中显示时间两则[/font][font=Calibri]sample[/font][font=宋体],分别见[/font][font=Calibri]2[/font][font=宋体]楼和[/font][font=Calibri]3[/font][font=宋体]楼代码[/font]
[font=Calibri]http://bbs.tongji.net/thread-126446-1-104.html int[/font][font=宋体]转换为[/font][font=Calibri]string [/font][font=宋体],[/font][font=Calibri]2[/font][font=宋体]楼和[/font][font=Calibri]3[/font][font=宋体]楼提供了两种方案[/font]
[url=http://bbs.tongji.net/thread-128389-1-102.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-128389-1-102.html[/color][/font][/url][font=Calibri] [/font][font=宋体]函数对象,看[/font][font=Calibri]5[/font][font=宋体]楼的回帖,[/font][font=Calibri]omale[/font][font=宋体]对函数对象的讲解[/font]
[url=http://bbs.tongji.net/thread-127541-1-102.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-127541-1-102.html[/color][/font][/url][font=Calibri] [/font][font=宋体]输入判断为回车时退出,代码在[/font][font=Calibri]2[/font][font=宋体]楼[/font]
[url=http://bbs.tongji.net/thread-127875-1-102.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-127875-1-102.html[/color][/font][/url][font=Calibri] [/font][font=宋体]创建临时文件,用完了删除,代码在[/font][font=Calibri]3[/font][font=宋体]楼[/font]
[url=http://bbs.tongji.net/thread-131010-1-99.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-131010-1-99.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于[/font][font=Calibri]sizeof[/font][font=宋体]的问题,看[/font][font=Calibri]6[/font][font=宋体]楼的提问和[/font][font=Calibri]7[/font][font=宋体]、[/font][font=Calibri]8[/font][font=宋体]楼的解释,对[/font][font=Calibri]sizeof[/font][font=宋体]有进一步的认识。[/font]
[url=http://bbs.tongji.net/thread-135685-1-97.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-135685-1-97.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于[/font][font=Calibri]debug[/font][font=宋体]的相关讨论[/font]
[url=http://bbs.tongji.net/thread-135585-1-97.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-135585-1-97.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于[/font][font=Calibri]c++[/font][font=宋体]重载[/font][font=Calibri]<<[/font][font=宋体]操作符的良好建议,直接看[/font][font=Calibri]8[/font][font=宋体]楼吧。[/font]
[url=http://bbs.tongji.net/thread-135620-1-97.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-135620-1-97.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于前[/font][font=Calibri]++[/font][font=宋体]和后[/font][font=Calibri]++[/font][font=宋体]的问题,看[/font][font=Calibri]3[/font][font=宋体]楼的解释。关于这个问题,侯捷先生上课的时候有一段代码是很直观的,在他的课件第[/font][font=Calibri]13[/font][font=宋体]个[/font][font=Calibri]dp[/font][font=宋体]论及[/font][font=Calibri]Iterator[/font][font=宋体]的部分。[/font]
[url=http://bbs.tongji.net/thread-130395-1-90.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-130395-1-90.html[/color][/font][/url][font=Calibri] [/font][font=宋体]删除文件,在[/font][font=Calibri]3[/font][font=宋体]楼[/font]
[url=http://bbs.tongji.net/thread-147448-1-89.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-147448-1-89.html[/color][/font][/url][font=Calibri] ctor[/font][font=宋体]和[/font][font=Calibri]vptr[/font][font=宋体]顺序问题,看[/font][font=Calibri]6[/font][font=宋体]楼。[/font]
[url=http://bbs.tongji.net/thread-151900-1-85.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-151900-1-85.html[/color][/font][/url][font=Calibri] [/font][font=宋体]一个关于指针问题的讨论,精彩有启发,分别看[/font][font=Calibri]2[/font][font=宋体]、[/font][font=Calibri]4[/font][font=宋体]、[/font][font=Calibri]5[/font][font=宋体]、[/font][font=Calibri]6[/font][font=宋体]楼。[/font]
[url=http://bbs.tongji.net/thread-175956-1-73.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-175956-1-73.html[/color][/font][/url][font=Calibri] operator+[/font][font=宋体]的问题,貌似初学者很容易犯,看[/font][font=Calibri]3[/font][font=宋体]楼[/font]
[url=http://bbs.tongji.net/thread-204379-1-69.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-204379-1-69.html[/color][/font][/url][font=Calibri] [/font][font=宋体]关于[/font][font=Calibri]const[/font][font=宋体]指针问题,很容易犯错。[/font]
[url=http://bbs.tongji.net/thread-224321-1-54.html][font=Calibri][color=#800080]http://bbs.tongji.net/thread-224321-1-54.html[/color][/font][/url][font=Calibri] [/font][font=宋体]又一则[/font][font=Calibri]const[/font][font=宋体]的问题,跟上面那一条一样很容易犯的错。[/font]
[size=12pt][url=http://bbs.tongji.net/thread-250076-1-39.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-250076-1-39.html[/color][/font][/size][/url][/size][font=宋体][size=12pt][b]关于类中动态分配[/b][/size][/font][size=12pt][b][font=Calibri]/[/font][/b][/size][font=宋体][size=12pt][b]释放内存的问题[/b][/size][/font][size=12pt][b][font=Calibri]/[/font][/b][/size][font=宋体][size=12pt][b]涉及复制构造函数与[/b][/size][/font][size=12pt][b][font=Calibri]return[/font][/b][/size][font=宋体][size=12pt][b]语句实现[/b][/size][/font][font=宋体][size=12pt]。仔细看,这种问题隐藏的比较深。[/size][/font][size=12pt][/size]

[align=left][size=12pt][url=http://bbs.tongji.net/thread-339332-1-20.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-339332-1-20.html[/color][/font][/size][/url][font=Calibri] Essential C++[/font][/size][font=宋体][size=12pt]勘误表[/size][/font][size=12pt][/size][/align]
[size=12pt][url=http://bbs.tongji.net/thread-316360-1-22.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-316360-1-22.html[/color][/font][/size][/url][/size][font=宋体][size=12pt]趣味三道题[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-429206-1-12.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-429206-1-12.html[/color][/font][/size][/url][font=Calibri] C++[/font][/size][font=宋体][size=12pt]编译优化导致对常量不分配存储空间[/size][/font][size=12pt][/size]
[size=12pt][url=http://bbs.tongji.net/thread-424922-1-11.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-424922-1-11.html[/color][/font][/size][/url][font=Calibri] [/font][/size][font=宋体][size=12pt]通过这个宏复习一些容易被忽略的东西,比如逗号表达式等等[/size][/font][size=12pt][/size]
[/size][/font]
[/font][/color][/size]

TNTleft 2008-10-5 00:16

[size=6][color=#000000][font=Calibri]C/C++[/font][font=宋体]的考题[/font][/color][/size]
[font=宋体][size=3][color=#000000]看帖的时候忘记复制地址了,好险把看到的考题都拷下来。[/color][/size][/font]
[font=Calibri][size=3][color=#000000][/color][/size][/font]
[color=#000000][b][font=宋体][size=12pt]某年[/size][/font][/b][b][size=12pt][font=Calibri]C++[/font][/size][/b][b][font=宋体][size=12pt]的考题[/size][/font][/b][b][size=12pt][/size][/b][/color]
[color=#000000][font=宋体][size=12pt]一、([/size][/font][size=12pt][font=Calibri]40[/font][/size][font=宋体][size=12pt]分)[/size][/font][size=12pt][/size][/color]
[color=#000000][size=12pt][font=Calibri]XML[/font][/size][font=宋体][size=12pt]在当今的企业计算中扮演着越来越重要的角色。它不但是一种数据存储的方式,而且对数据交换,业务集成也有重要的意义。[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]一个简单的[/size][/font][size=12pt][font=Calibri]XML[/font][/size][font=宋体][size=12pt]文件是一个文本文件。它由一系列元素[/size][/font][size=12pt][font=Calibri](element)[/font][/size][font=宋体][size=12pt]构成。元素以[/size][/font][size=12pt][font=Calibri]<[/font][/size][font=宋体][size=12pt]元素名[/size][/font][size=12pt][font=Calibri]>[/font][/size][font=宋体][size=12pt]开始,以[/size][/font][size=12pt][font=Calibri]</[/font][/size][font=宋体][size=12pt]元素名[/size][/font][size=12pt][font=Calibri]>[/font][/size][font=宋体][size=12pt]结束。元素名中间不可能有空格。元素名区分大小写。元素可以分层嵌套。[/size][/font][size=12pt][font=Calibri]XML[/font][/size][font=宋体][size=12pt]文件中,不可打印字符(回车,空格,[/size][/font][size=12pt][font=Calibri]TAB[/font][/size][font=宋体][size=12pt]键等)都会被忽略。[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]编写[/size][/font][size=12pt][font=Calibri]C++[/font][/size][font=宋体][size=12pt]程序,解析一个存储雇员信息的[/size][/font][size=12pt][font=Calibri]XML[/font][/size][font=宋体][size=12pt]文件[/size][/font][size=12pt][font=Calibri](C:\1_in.xml)[/font][/size][font=宋体][size=12pt]。然后将解析结果按如下格式输出到[/size][/font][size=12pt][font=Calibri]c:\1_out.txt[/font][/size][font=宋体][size=12pt]:[/size][/font][size=12pt][/size][/color]
[color=#000000][size=12pt][font=Calibri]1[/font][/size][font=宋体][size=12pt].[/size][/font][size=12pt][font=Calibri]        [/font][/size][font=宋体][size=12pt]按照[/size][/font][size=12pt][font=Calibri]firstname lastname[/font][/size][font=宋体][size=12pt]的格式,输出该员工姓名。[/size][/font][size=12pt][/size][/color]
[color=#000000][size=12pt][font=Calibri]2[/font][/size][font=宋体][size=12pt].[/size][/font][size=12pt][font=Calibri]        [/font][/size][font=宋体][size=12pt]如果员工工资大于[/size][/font][size=12pt][font=Calibri]100000[/font][/size][font=宋体][size=12pt],换行输出员工的[/size][/font][size=12pt][font=Calibri]title[/font][/size][font=宋体][size=12pt],否则输出结束。[/size][/font][size=12pt][/size][/color]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\1_in.xml[/font][/size][font=宋体][size=12pt]输入样例:(若有多个雇员,则有多个[/size][/font][size=12pt][font=Calibri]employee[/font][/size][font=宋体][size=12pt]元素)[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]<employee>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<name>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<firstname>Bill</firstname>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<lastname>Gates</lastname>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
</name>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<address>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<street>Microsoft</street>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<city>Redmond</city>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<state>WA</state>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<postcode>10001</postcode>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<country>USA</country>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
</address>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<title>President</title>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
<salary>175000</salary>[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]</employee>[/font][/color][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\1_out.txt[/font][/size][font=宋体][size=12pt]输出样例:[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]Bill Gates[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]President[/font][/color][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][font=宋体][size=12pt]二、([/size][/font][size=12pt][font=Calibri]40[/font][/size][font=宋体][size=12pt]分)[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]请实现一个基于[/size][/font][size=12pt][font=Calibri]list[/font][/size][font=宋体][size=12pt]的非负整数集合(集合中不得有重复元素)类[/size][/font][size=12pt][font=Calibri]CLinkedSet[/font][/size][font=宋体][size=12pt]。要求:[/size][/font][size=12pt][/size][/color]
[color=#000000][size=12pt][font=Calibri]1[/font][/size][font=宋体][size=12pt].[/size][/font][size=12pt][font=Calibri]
[/font][/size][font=宋体][size=12pt]该类对象不支持[/size][/font][size=12pt][font=Calibri]Copy[/font][/size][font=宋体][size=12pt]构造和[/size][/font][size=12pt][font=Calibri]Copy[/font][/size][font=宋体][size=12pt]赋值[/size][/font][size=12pt][/size][/color]
[color=#000000][size=12pt][font=Calibri]2[/font][/size][font=宋体][size=12pt].[/size][/font][size=12pt][font=Calibri]        [/font][/size][font=宋体][size=12pt]要求能使如下代码顺利运行:[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]int main()[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]{ [/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
ifstream in("c:\\2_in.txt");[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
ofstream out("c:\\2_out.txt");[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
CLinkedSet ls;[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
int size;[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
in >> size;[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
for(int i = 0; i < size; ++i)[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
{ [/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
in >> ls; [/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
}
[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
for(i = 0; i < ls.size();++i)[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
{ [/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
out << ls[ i ] << endl;[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
}[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
in.close();[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]
out.close();[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]}[/font][/color][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\2_in.txt[/font][/size][font=宋体][size=12pt]输入样例:(不符合要求的数据被忽略)[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]5[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]2[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]-4[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]6[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]1[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]2[/font][/color][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\2_out.txt[/font][/size][font=宋体][size=12pt]输出样例:[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]2[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]6[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]1[/font][/color][/size]
[b][size=12pt][font=Calibri][color=#000000][/color][/font][/size][/b]
[b][size=12pt][font=Calibri][color=#000000][/color][/font][/size][/b]
[color=#000000][font=宋体][size=12pt]三、([/size][/font][size=12pt][font=Calibri]20[/font][/size][font=宋体][size=12pt]分)[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]请实现一个当[/size][/font][size=12pt][font=Calibri]key[/font][/size][font=宋体][size=12pt]的数据类型为[/size][/font][size=12pt][font=Calibri]string[/font][/size][font=宋体][size=12pt]类时,默认为按[/size][/font][size=12pt][font=Calibri]key[/font][/size][font=宋体][size=12pt]的长度降序排列(相同长度按字符串的字典序升序排列)的[/size][/font][size=12pt][font=Calibri]Map[/font][/size][font=宋体][size=12pt]容器对象。(提示:利用函数对象改造[/size][/font][size=12pt][font=Calibri]Map[/font][/size][font=宋体][size=12pt]容器)[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]要求演示该容器对象的排序效果:[/size][/font][size=12pt][/size][/color]
[color=#000000][font=宋体][size=12pt]从[/size][/font][size=12pt][font=Calibri]c:\3_in.txt[/font][/size][font=宋体][size=12pt]输入的若干无空格的字符串及相应的整数,分别作为[/size][/font][size=12pt][font=Calibri]key[/font][/size][font=宋体][size=12pt]和[/size][/font][size=12pt][font=Calibri]value[/font][/size][font=宋体][size=12pt]导入到所实现的[/size][/font][size=12pt][font=Calibri]Map[/font][/size][font=宋体][size=12pt]容器对象,然后顺次输出到[/size][/font][size=12pt][font=Calibri]c:\3_out.txt[/font][/size][font=宋体][size=12pt]。[/size][/font][size=12pt][/size][/color]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\3_in.txt[/font][/size][font=宋体][size=12pt]输入样例:[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]cdcdcd,1[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]ee,2[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]ababab,3[/font][/color][/size]
[size=12pt][font=Calibri][color=#000000][/color][/font][/size]
[color=#000000][size=12pt][font=Calibri]c:\3_out.txt[/font][/size][font=宋体][size=12pt]输出样例:[/size][/font][size=12pt][/size][/color]
[size=12pt][color=#000000][font=Calibri]ababab,3[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]cdcdcd,1[/font][/color][/size]
[size=12pt][color=#000000][font=Calibri]ee,2[/font][/color][/size]

[b][size=12pt][font=Calibri][color=#000000][/color][/font][/size][/b]

TNTleft 2008-10-5 00:17

另一年的C++考题
一、(15分)
设计一个桥牌的牌类――class CBridge。桥牌比赛用牌每副为52张,包括4种花色,每种花色有13张牌。花色等级从高到低依次为黑桃(Spade),红心(Heart),方块(Diamond), 梅花(Club)。每种花色的牌点,从大到小依次A、K、Q、J、T、9、8、7、6、5、4、3、2。
每一个玩家一手牌总共有各种花色的牌13张,可以计算这一手牌的牌力,计算公式一般为:牌力 = 大牌点 + 牌型点。
A, K, Q, J称为大牌,相应的点数为:A―4点,K―3点,Q―2点,J―1点。因此大牌点即为手牌中拥有的各种花色的大牌的点数之和。
牌型点 = 最长套花色的牌的张数 + 次长套花色的牌的张数。(若有多个花色牌数相同,随便选取其中一个)
每个牌类的对象有以下属性:
1)        花色(suit)
2)        牌点 (symbol)
每个牌类的对象有以下构造函数:
1)        接受1个形如”C4”的string为参数的构造函数。
2)        copy constructor。
每个牌类的对象有以下操作:
1)        屏幕输出功能,要求重载输出操作符<<,并要求以cout << 的形式输出。输出格式如下:
例如花色为S(short for spade),牌点为A的一张牌输出为5行5列的阵列(即向屏幕输出5行,每行5个字符,模拟输出一张牌。):
+---+
|A A|
| S |
|A A|
+---+
再如花色为C(short for  club),牌点为3的一张牌输出为5行5列的阵列:
+---+
|3 3|
| C |
|3 3|
+---+
2)        方法char getSuit(),返回该对象的花色(suit)。
3)        方法char getSymbol(),返回该对象的牌点(symbol)。
4)        重载操作符号>、<、>=、<=、= =,返回值类型为bool类型,返回值的true or false根据相比较的牌的大小而返回相应的合理值。(提示:可在牌生成的时候,为其设定一个特征值,比较大小的时候直接比较特征值)
5)        重载操作符号=。
有个全局的函数int calcPoints(…)(参数表自行定义),若输入的牌的数目正好为13张,则计算这一手牌的牌力,输出为”Points: xx”,否则输出”Points: Card Number Errors”。
题目输入要求:
从文件c:\1_in.txt中读入数据,为字符串序列,每行一个字符串。每个字符串形如”C4”、”SA”等等。要求对每行的字符串进行处理。
题目输出要求:
根据输入的字符串输出相应的牌类到文件c:\1_out.txt。如果字符串不能对应某张牌,那么输出单独一行”error”。
每个字符串对应的输出后面,追加输出一次cout << endl。
最后输出计算的牌力结果。
输入样例:
C3
SA
AA
HA
DA
输出样例:
+---+
|3 3|
| C |
|3 3|
+---+
+---+
|A A|
| S |
|A A|
+---+
error
+---+
|A A|
| H |
|A A|
+---+
+---+
|A A|
| D |
|A A|
+---+
Points: Cards Number Error!

二、(15分)
不利用标准库中的泛型算法,撰写泛型模板函数MySort(),以实现对某个对象集合的排序操作。要求可以支持任意数据类型,只要该数据类型支持 < 和 > 比较操作。
MySort接受参数如下:
1)        集合或容器的起始位置first
2)        集合或容器的终结位置last
3)        函数对象,制定排序的方式,如果不传递指定的函数对象,那么MySort()默认升序排列。
要求演示MySort的排序效果:
1)        从c:\2_in_a.txt输入的字符串序列,生成class CBridge的对象的集合,并且对其进行降序排序,输出到c:\2_out_a.txt
2)        从c:\2_in_b.txt输入的int序列,并且对其进行升序排序,输出到c:\2_out_b.txt
3)        从c:\2_in_c.txt输入的string序列,并且对其进行按字符串长度的升序排序(相同长度按字典的降序),输出到c:\2_out_c.txt
注意,对排序算法实现方法以及效率不作要求。
输入样例 1):
C3
CA
SA
HA
DA
输出样例 1):
+---+
|A A|
| S |
|A A|
+---+
+---+
|A A|
| H |
|A A|
+---+
+---+
|A A|
| D |
|A A|
+---+
+---+
|A A|
| C |
|A A|
+---+
+---+
|3 3|
| C |
|3 3|
+---+

输入样例 2):
3
4
5
6
1
输出样例 2):
1
3
4
5
6
输入样例 3):
abc
cabbbbbaa
bca
输出样例 3):
bca
abc
cabbbbbaa

三、(10分)
  在设计模式中,Singleton模式的主要作用是保证在应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录、数据库连接都需要这样的单线程操作。还有, Singleton能够被状态化;这样,多个单态类在一起就可以象一个状态仓库一样向外提供服务。比如,你要论坛中的帖子计数器,每浏览一次需要计数,单态类能保持住这个计数。 另外,Singleton也能够被无状态化,提供工具性质的功能, Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制实例的个数。
class Singleton
{
public:
        static Singleton* getInstance();
private:
        Singleton(){ }
        static Singleton * handle;
};
Singleton* Singleton::handle = NULL;
Singleton* Singleton::getInstance()
{
        if(handle == NULL)
                handle = new Singleton;
        return handle;
}
要求:
1.        请说说除了已经列出的例子之外,你还可能将Singleton用到哪些设计或应用的场合?(请在代码前以注释的方式回答)
2.        将如下程序修改成Singleton模式。
int g_counter;
void initialCounter()
{
        g_counter = 0;
}
void increase()
{  g_counter++;}
void print()
{ cout<< g_counter<<endl;}
int main()
{
        initialCounter()
        for(int i = 0 ; i < 10; i++)
                increase();
        print();
        return 0;
}

[[i] 本帖最后由 TNTleft 于 2008-10-5 00:30 编辑 [/i]]

TNTleft 2008-10-5 00:18

某年C考题
一、(20分)
游戏修改软件(例如:FPE,金山游侠,东方不败)给游戏一族带来了莫大的帮助。其基本原理是通过多次搜索游戏程序的内存空间,找到某个位于固定地址的值(通常是生命,道具,金钱等),然后将其修改,从而达到降低游戏难度的目的。现在请使用C语言开发一个模拟修改游戏的程序,通过两次搜索,找到金钱的地址空间并修改之。已知某游戏用三位数表示金钱,且两次内存镜像金钱所在的内存地址不变。设数据输入文件c:\1_in.txt内容如下:
[092]
12009242345564345783245695376092732789754092646578
[005]
78203488865568854356799641125005754876590092123423

文件中第一行表示该游戏运行过程中某一时刻,游戏者拥有092金钱,第二行表明游戏在该时刻的内存镜像。但可能不只一个内存地址的值是092,如下面下划线处所示:
12009242345564345783245695376092732789754092646578
游戏者在游戏中花费了一定数量的金钱,这时,游戏者手中的金钱是005,如第三行所示,第四行则为此时的内存镜像。
在第一次标092的三个位置中,只有一个是005,表示这个就是我们要找的内存地址,如下面所示。其它则为干扰数据。
78203488865568854356799641125005754876590092123423

编写的程序,把第二次内存镜像中的金钱数改为999,其余地址内容不变。把结果输出到c:\1_out.txt。本例中,1_out.txt的内容应该为:
78203488865568854356799641125999754876590092123423


二、(20分)
        现有《C语言》课程成绩的数据文件,包含学生的姓名与成绩。请编写程序,先统计所有学生的平均分(平均分的计算方法为:所有学生得分之和,除以学生人数),然后计算每一个学生的成绩与平均分的差值的绝对值,并按这个计算值的升序来排序这些学生(相同差值则按姓名的升序)。请用动态数组实现之。
        例如,设输入数据文件c:\2_in.txt的内容如下:
zhangsan 100
lisi 60
wangermazi 50

        应先统计平均分(70)并输出,然后计算每个学生的得分与平均分差值的绝对值,排序后输出。若有小数,则四舍五入到整数。输出格式为“绝对值---姓名,得分”。
则在本例下,输出文件c:\2_out.txt的内容应为:
Mean=70
10---lisi,60
20---wangermazi,50
30---zhangsan,100

三、(20分)
撰写一个程序,能够实现链栈的基本功能。
所谓链栈,是用单向链表实现的栈。单向链表每个元素结点包括两个部分:用户需要的整型数据,和下一个结点的指针。栈(Stack)是一种最基本的后进先出的数据结构,最主要有两种操作:压栈(push),往栈顶插入一个元素;弹栈(pop),从栈顶删除一个元素。
设数据输入文件c:\3_in.txt的内容如下:
push 11
push 33
pop
push 11

则在本例下,栈的情况及其变化过程为:
链栈始终有一个不存放数据的结点,用一个bottom指针指向,代表栈底。另外有一个top指针,始终指向当前栈顶元素。当栈为空的时候,top与bottom重合。
        要求所编写的程序,能从指定的c:\3_in.txt读取一系列的压栈与弹栈操作指令并执行,执行完之后,能把当前栈内从栈顶开始的所有元素依次输出到c:\3_out.txt。(注意:当栈空时,若再执行pop操作,应显示”Invalid operation!”)。
        则在本例的输入数据下,输出文件c:\3_out.txt的内容应为:
11
11

TNTleft 2008-10-5 00:23

目前就是这么多了
欢迎大家提意见 毕竟一个人看的 难免有疏失
呼~~~

OwnWaterloo 2008-10-5 00:56

[quote]原帖由 [i]TNTleft[/i] 于 2008-10-5 00:23 发表 [url=http://bbs.tongji.net/redirect.php?goto=findpost&pid=8080161&ptid=598011][img]http://bbs.tongji.net/images/common/back.gif[/img][/url]
目前就是这么多了
欢迎大家提意见 毕竟一个人看的 难免有疏失
呼~~~ [/quote]
已经……  非常…… 多了……
辛苦~~~

但是好多帖子都是乱码额……


其实我本来想列出一个进行Windows程序设计所必须掌握的基础知识的列表的…
但是列完后觉得,贴上去会被人鄙视…… 因为第1个就是UNICODE宏相关的东西……
看来有志同道合的人觉得这个同样重要,我就放心大胆的说了~~

最基本的就是坚持
类型:                  使用 TCHAR, TCHAR*,const TCHAR* ……  同时还有 数组长度坚持 sizeof(a)/sizeof(a[0]);
字符串字面量: 使用 TEXT,_T
WindowAPI:      头文件已经做好工作,利用宏,将函数名替换到正确的A或W版本
c run-time:        这部分是最容易忘记的,要查对应的 _t 版本。 如有必要,需要使用 locale.h 中的东西。
c++ run-time:   如有需要,需要使用 locale 中的locale类以及stream对象的imbue。 没有tstring这样的东西,需要自己定义,如:

namespace  std {
#if !defined(UNICODE) && !defined(_UNICODE)
        typedef basic_string<char> tstring;
#else
        typedef basic_string<wchar_t> tstring;
#endif
}

ostream,istream,fstream,sstream如有需要,同样如此。

iostream稍有不同:

namespace std { namespace {

#if !defined(UNICODE) && !defined(_UNICODE)
tistream& tcin = cin;
        tostream& tcout = cout;
        tostream& tclog = clog;
        tostream& tcerr = cerr;
#else
        tistream    &tcin   = wcin;
        tostream    &tcout  = wcout;
        tostream    &tclog  = wclog;
        tostream    &tcerr  = wcerr;
#endif
} }


这些东西我已经做好了一套,但是不知道上传到哪比较好……


如果不坚持这些原则,最容易遇到的就是编译时的错误。
网上有许多代码都是VC6下的,默认没有定义UNICODE宏。拿到VC8下就容易出现编译错误。
直接cast是很危险的。基本理解UNICODE宏的相关问题(其实不用多少时间)后,就很容易改正这些编译错误。

更严重的是混用,同时又通过了类型检查,导致运行错误。
比如操作注册表的某个函数,参数类型是 void* …… ,混用能轻松通过类型检查,不会导致编译错误。
而函数是由A或者W版本来决定如何解释接收到的参数,A版本就认为它是char*,W版本认为它是wchar_t*。



有了这些基础之后,才能自行决定调用函数的A或者W版本,理解IsWindowUnicode以及SubClassing对它的影响,还有mbs与wcs的转化,还有wcs的编码规则。

[[i] 本帖最后由 OwnWaterloo 于 2008-10-5 01:46 编辑 [/i]]

OwnWaterloo 2008-10-5 01:35

[quote]原帖由 [i]TNTleft[/i] 于 2008-10-5 00:17 发表 [url=http://bbs.tongji.net/redirect.php?goto=findpost&pid=8080153&ptid=598011][img]http://bbs.tongji.net/images/common/back.gif[/img][/url]
另一年的C++考题
一、(15分)
三、(10分)
  在设计模式中,Singleton模式的主要作用是保证在应用程序中 ……
[/quote]

这题目有问题……

首先应该将复制构造函数和赋值操作也定义为[color=red]private[/color],否则编译器会生成一个[color=red]public[/color]合成版本,使得如下调用成功:

--------------------------------------------------------------------------------[code]Singleton another = *Singleton::getInstance();[/code]--------------------------------------------------------------------------------

其次,C++里面要实现Singleton是[color=red]很复杂[/color]的,[color=red]根本不应该作为笔试题目[/color]。以这个作题目,只能说明出题的人想得太简单。
具体可以[b][color=red]参考[/color][/b]《[b]Modern C++ Design[/b]》和Loki::Singleton。

主要问题是:(由严重到轻)
1.多线程安全。 (任何语言实现都要考虑)
2.多个Singleton依赖,如何控制析构顺序。 (许多语言办不到~~ C++可以~~ 不过很麻烦……)
3.创建实例的方法。 (C++特有问题)



笔试如果真遇到这种问题是很郁闷的,只能抛开许多问题不管。
写个Meyers(也就是Effective系列的作者)式Singleton了事算了……

--------------------------------------------------------------------------------[code]Singleton* Singleton::getInstance() {
  static Singleton s;
  return &s;
}[/code]--------------------------------------------------------------------------------


如果是题目那样,由new创建,可以写

--------------------------------------------------------------------------------[code]Singleton* Singleton::getInstance() {
    if (!handle)
        handle = new Singleton;
    atexit(&Singleton::Destroy);
    return handle;
}[/code]--------------------------------------------------------------------------------

其中的Destroy是静态函数, 不过又会引起析构顺序的问题。

--------------------------------------------------------------------------------[code]void __cdecl Singleton::Destroy(void) {
  assert(handle);
  delete handle;
}[/code]--------------------------------------------------------------------------------


笔试的话, 还是有时间实现多线程安全的。析构顺序问题就免了……
给 if (!handle) 的检测加锁。
或者再飘逸一点:

--------------------------------------------------------------------------------[code]if (!handle)
{
  lock guard;
  (void) guard;
  if (!handle)
     handle = new Singleton;
}
return handle;[/code]--------------------------------------------------------------------------------

但这又不是绝对安全了,视CPU而定。需要权衡。



即使lock只写伪代码, 即使只比原来多几行代码, 绝对可以拿到额外分数。
总之,不管笔试面试,要在有限的时间类,充分展现。

面试的话,展现的时间就更多了,可以抓住这个机会和面试官慢慢陈述这些问题,别说15分, 45分都没问题。
因为你已经和其他竞争者拉开档次了。

[[i] 本帖最后由 OwnWaterloo 于 2008-10-5 01:56 编辑 [/i]]

OwnWaterloo 2008-10-5 02:14

[quote]原帖由 [i]TNTleft[/i] 于 2008-10-5 00:06 发表 [url=http://bbs.tongji.net/redirect.php?goto=findpost&pid=8080136&ptid=598011][img]http://bbs.tongji.net/images/common/back.gif[/img][/url]
[font=宋体][size=6][color=#000000]对小画板有益的几则
[/color][/size][/font][size=9pt][font=宋体][size=9pt][font=宋体][color=#000000][font=宋体][size=6][size=12pt][url=http://bbs.tongji.net/thread-191821-1-27.html][size=10.5pt][font=Calibri][color=#800080][font=宋体][font=宋体]http://bbs.tongji.net/thread-191821-1-27.html[/font][/font][/color][/url][/font][font=宋体][size=12pt]看四楼的回帖[/size][/font][size=12pt][font=Calibri] [/font][/size][font=宋体][size=12pt]对于[/size][/font][size=12pt][font=Calibri]sdk[/font][/size][font=宋体][size=12pt]全局变量存储的建议,很值得参考[/size][/font][/size][/size][/size][/font][/color][/font][/size][/font][/size]
[/quote]

又谈到了Singlton,再多说两句……

Singleton[color=red]类[/color]要么不用, 要么在Application中只有一个Singleton[color=red]类[/color]。

这样最简单的解决了“多Singleton依赖,析构顺序控制很难控制”。
反正是在设计应用而不是设计库, 怎么定义全由自己掌握。

而且画板应该不需要多线程……  即使需要, 也可以在创建次线程之前,手动调用getInstance (然后什么都不做都行) 使得其初始化。
这样的话 Meyers 式Singleton是最优雅的。

OwnWaterloo 2008-10-5 03:11

[quote]原帖由 [i]TNTleft[/i] 于 2008-10-5 00:06 发表 [url=http://bbs.tongji.net/redirect.php?goto=findpost&pid=8080136&ptid=598011][img]http://bbs.tongji.net/images/common/back.gif[/img][/url]
[url=http://bbs.tongji.net/thread-516824-1-7.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-516824-1-7.html[/color][/font][/size][/url][font=Calibri][size=3][color=#000000] [/color][/size][/font][url=http://bbs.tongji.net/thread-516824-1-1.html][color=#000000][size=3][font=Calibri]Windows SDK [/font][font=宋体]编程调试[/font][font=Calibri] TRACE for SDK[/font][/size][/color][/url][size=3][font=Calibri][color=#000000] [/color][/font]
[/size][size=12pt][url=http://bbs.tongji.net/thread-516944-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-516944-1-6.html[/color][/font][/size][/url][font=Calibri][color=#000000] [/color][/font][/size][color=#000000][font=宋体][size=12pt]窗口透明详解[/size][/font][size=12pt][/size]
[/color][size=12pt][url=http://bbs.tongji.net/thread-519610-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-519610-1-6.html[/color][/font][/size][/url][font=Calibri][color=#000000] [/color][/font][url=http://bbs.tongji.net/thread-519610-1-1.html][color=#000000][font=宋体]鼠标在窗口左或上的时候[/font][font=Calibri] [/font][font=宋体]画出图形都在下方的原因和解决办法[/font][/color][/url][font=Calibri][color=#000000] [/color][/font][/size]
[size=12pt][url=http://bbs.tongji.net/thread-519821-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-519821-1-6.html[/color][/font][/size][/url][font=Calibri][color=#000000] [/color][/font][/size][color=#000000][font=宋体][size=12pt]窗口闪烁解决[/size][/font][size=12pt][/size]
[/color][size=12pt][url=http://bbs.tongji.net/thread-520117-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-520117-1-6.html[/color][/font][/size][/url][font=Calibri][color=#000000] [/color][/font][/size][color=#000000][font=宋体][size=12pt]窗口缩放[/size][/font][size=12pt][font=Calibri]demo[/font][/size]
[/color][size=12pt][url=http://bbs.tongji.net/thread-520484-1-6.html][size=10.5pt][font=Calibri][color=#800080]http://bbs.tongji.net/thread-520484-1-6.html[/color][/font][/size][/url][font=Calibri][color=#000000] [/color][/font][/size][color=#000000][font=宋体][size=12pt]进程通信[/size][/font][size=12pt][font=Calibri]demo[/font][/size][/color]
[/quote]

你收集得真多…… 一时半会看不完……  而且好多都是乱码……


先把自己的整理一下……


-------------------------------------------------------------------------------- 1.TRACE for SDK --------------------------------------------------------------------------------
页面没乱……
代码可以使用, 不过需要注意UNICODE宏是否匹配。

之所以取名叫TRACE …… 是因为以后学MFC的时候有这个东西,可以先用这个假的练习。
最底层是调用OutputDebugString(A/W) ,输出到IDE的“[color=red]输出[/color]”窗口上。 并且要[color=red]调试[/color]运行,也就是[color=red]F5[/color],而不是Ctrl+F5。
MinGW可以使用这个函数, 但是没找到输出在那里, 不知道是不是只有VC的IDE才行……


这玩意我后来又有修改,主要是增加了一个类似cout的对象。
可以将 TRACE("formatstring",p1,p2,p3 ... );
替换成  trace<<p1<<p2<<p3...;

缺点:
对于内建数据类型 类似printf的输出也许更直观方便。 不过C++的<<用习惯了也凑合, 而且还可以扩展<<。
trace 对象的初始化,会给应用程序的启动增加负担。

优点:
可以将trace类的输出置空(什么都不作,通过条件编译控制,当然也需要重新编译工程), trace<<p1<<p2<<p3 会变得什么都不剩…… 完全不生成机器码。
调试代码就可以一直留在源代码中。
而printf(或者TRACE),因为使用了可变长参数,一次函数调用是怎么都优化不掉的,即使函数体什么都不做。


btw: 如果想使用Console输出, 也可以使用如下代码:

--------------------------------------------------------------------------------[code]/** before use printf scanf ... */
AllocConsole();  /*  windows.h */
freopen("CONIN$","r",stdin); /* stdio.h */
freopen("CONOUT$","w",stdout);
freopen("CONOUT$","w",stderr);

// if use cout,cerr,clog
std::ios_base::sync_with_stdio( if_use_cplusplus_and_c_io_library_together );



/** when io have been done */
fclose(stderr);
fclose(stdout);
fclose(stdin);
FreeConsole();[/code]--------------------------------------------------------------------------------

[[i] 本帖最后由 OwnWaterloo 于 2008-10-5 03:17 编辑 [/i]]

OwnWaterloo 2008-10-5 03:32

2.鼠标在窗口左或上的时候 画出图形都在下方的原因和解决办法
如果用SetCapture,ReleaseCapture,就很容易遇到这问题。

3.窗口透明详解
期中项目没这个要求……

4.窗口闪烁解决
这个是针对矢量图“画图板”这个项目的。
如果是做位图, 就没什么价值了。

-------------------------------------------------------------------------------- 更广泛的闪烁解决(找不到作者出处了……   请多包涵…………) --------------------------------------------------------------------------------
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。

先来谈谈闪烁产生的原因

原因一:
如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕
上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。

一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的。

这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个
刷新周期内完成,那么给人的视觉感受就是,先看到只有背景色的图像,然后看到画上内容的图像,
这样就会感觉闪烁了。

解决方法:尽量快的输出图像,使输出在一个刷新周期内完成,如果输出内容很多比较慢,那么采用
内存缓冲的方法,先把要输出的内容在内存准备好,然后一次输出到显存。要知道一次API调用一般可以
在一个刷新周期内完成。

对于GDI,用创建内存DC的方法就可以了

原因二:

复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父
窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。

我们知道父窗口上被子窗口挡住的部分其实没必要重画的

解决方法:给窗口加个风格 WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。

如果同级窗口之间有重叠,那么需要再加上 WS_CLIPSIBLINGS 风格

原因三:

有时候需要在窗口上使用一些控件,比如IE,当你的窗口改变大小的时候IE会闪烁,即使你有了WS_CLIPCHILDREN
也没用。原因在于窗口的类风格有CS_HREDRAW 或者 CS_VREDRAW,这两个风格表示窗口在宽度或者高度变化的时候
重画,但是这样就会引起IE闪烁

解决方法:注册窗口类的时候不要使用这两个风格,如果窗口需要在改变大小的时候重画,那么可以在WM_SIZE的时候
调用RedrawWindow。

原因四:

界面上窗口很多,而且改变大小时很多窗口都要移动和改变大小,如果使用MoveWindow或者SetWindowPos两个API来
改变窗口的大小和位置,由于他们是等待窗口重画完成后才返回,所以过程很慢,这样视觉效果就可能会闪烁。

解决方法:

使用以下API来处理窗口移动,BeginDeferWindowPos, DeferWindowPos,EndDeferWindowPos
先调用 BeginDeferWindowPos 设定需要移动的窗口的个数
使用DeferWindowPos,来移动窗口,这个API并不真的造成窗口移动
EndDeferWindowPos 一次性完成所有窗口的大小和位置的改变。

有个地方要特别注意,要仔细计算清楚要移动多少个窗口,BeginDeferWindowPos设定
的个数一定要和实际的个数一致,否则在Win9x下,如果实际移动的窗口数多于调用BeginDeferWindowPos
时设定的个数,可能会造成系统崩溃。在Windows NT系列下不会有这样的问题。

--------------------------------------------------------------------------------
类似的还有很多, 这个贴子说的比较本质一点, 所以就复制下来了……


5.窗口缩放demo
6.进程通信demo
因为是demo…… 所以代码不会写得很好看……  (不是demo也不咋滴……)

窗口缩放的话, 如果是位图, 工作量会小很多。

进程通信……  我想的那些东西完全是trick……
感觉把这功能强加给画板很牵强……
最终那个理想的设计, 直到现在也没去做………………

TNTleft 2008-10-5 08:53

乱码问题我也一时没办法解决

之前的帖子居然会把html标签显示出来 而且所有“<>” 都被替换掉了
大概是论坛之前的源代码中没有对特殊字符串进行过滤吧?  我很无语~~~

看这些帖的时候我都是拷到ultraedit里处理一番后才看的

有达人知道这是怎么回事吗????

houston 2008-10-5 23:11

顶两个助教(现任助教和原助教)在这里的火热行动。。。。

colorful_vagase 2008-10-5 23:27

一个字——》顶!

TNTleft 2008-10-8 07:49

重新顶一下

同时严重感谢一下 OwnWaterloo学长

hawk_with_wind 2008-10-18 19:12

好帖子要顶

greenkiller 2008-10-30 01:38

顶上来,大家方便查阅

forking 2008-10-30 13:15

这帖还没归档?
页: [1]
查看完整版本: 课程答疑与学习交流板块帖子整理归档