高手坐镇(03)
编程学堂
编程开发领域很广,开发途中遇到的问题千奇百怪,碰到问题找不到解决方法怎么办?需要高人指点!为此,我们特意开设此栏目,邀请四方开发高手来帮助大家。如果你在开发途中遇到问题,如果你有能力解决这些问题,欢迎与我们联系,来信请发到pcw-chendx@vip.sina.com。
C语言:VC 6与VS 2008选择哪个
题目难度:★
读者来信:我是一名C语言的初学者,不知道VC6与VS 2008哪个更好用,希望有经验的前辈多多指点。
资深教师 李严同:对于初学者,不妨先试试VC 6(相对简单小巧一些),再过渡到VS 2008。总的来说,VC 6较老了,不支持很多C++特性,容易出现一些莫名其妙的错误让你抓狂,而VS 2008就不存在这些问题,建议熟悉VC 6后立即换VS 2008。
C语言:S为什么是6
题目难度:★★
读者来信:我在网上看到一段代码,为什么S等于6?希望《电脑报》的高手帮忙分析一下。代码如下:
#include "stdio.h"
void main()
{ int s=0,k;
for(k=5;k>=0;k--)
{ switch(k)
{ case 1:
case 5: s++;break;
case 3:
case 4: break;
case 0:
case 2: s+=2;break;
} }
printf("s=%d\n",s);
资深教师 李严同:这是一道循环题,你只要分析每一个switch的情况即可:
k = 5时,s+1=0+1=1,然后结束循环。
k = 4时,直接结束循环s=1。
k = 3时,无任何操作就结束循环s=1。
k = 2时,s+2=1+2=3,然后结束循环。
k = 1时,s+1=3+1=4,然后结束循环。
k = 0时,s+2=4+2=6,然后结束循环。
辅助软件:安装包如何制作
题目难度:★★
读者来信:我想问问软件的安装包是怎么制作的?谢谢!
软件开发者 张继常:一般是用软件制作的,下面我以Inno Setup编译器为例介绍详细的制作步骤。在天空、华军等软件下载网站下载Inno Setup,运行后选择“用脚本向导创建一个新的脚本文件”,然后填写应用程序名称,再点击“下一步”按钮。
然后点击“浏览”按钮,添加可执行文件;点击“添加文件”按钮,添加数据库文件、配置文件等文件;点击“添加目录”按钮,添加应用程序所需要的相关文件,例如help.html、.jpg等文件。做完这些再配置打包文件就完成软件安装包的制作了。
JavaScript:网页同时弹出两个窗口
题目难度:★★★
读者来信:我是某高校网站下属学院网站的管理员,我想在现有主页中添加一个同时弹出两个窗口的功能,用来发布放假通知和就业信息更新。我不知道怎么实现这个功能,请高手赐教!
网页开发师 灵儿:这个不难,代码如下所示。需要注意的是,为了避免两个窗口相互覆盖,要用top和left进行控制。
<!——
function openwin() {
window.open (page.html, newwindow, height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no)
window.open (page2.html, newwindow2, height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no)
}
Delphi:身份证号码升级为18位
题目难度:★★★★
读者来信:老师说为了积累开发经验,我们应该多看看别人开发的软件,可我水平有限很多都看不懂,例如老师给我们的15位身份证号码升级为18位身份证计算器,就没有摸到门道,希望得到高人的详细指点。
软件开发者 张继常:软件是经过封装的,单看外观当然看不出门道,你老师的意思是让你们私下研究相关的思路和技术。不过你既然问了,那我就来详细解说其中的门道吧!首先,你要明白18位身份证号码的编码规则:
第一、二位数字表示省、自治区、直辖市;第三、四位数字表示地区、市、州、盟;第五、六位数字表示县、市、镇、区;第七位至第十四位数字表示身份证持有者的出生年、月、日;第十五位至第十七位数字是顺序码,顺序码的奇数分配给男性,偶数分配给女性。第十八位数字表示效验码。
效验码的算法如下:
S = Ai * Wi, i = 1, ... , 17
Y = mod(S, 11)
i表示号从右至左不包括校验码字符在内的位置序号;Ai表示第i位置上的身份证号码字符值;Wi表示第i位置上的加权因子。例如某男性公民身份号码本体码为510402780502301,S=∑(Ai×Wi) =(35+9+0+20+0+8+2+9+42+24+0+45+0+10+24+0+2) = 230 ,Y=mod (S,11) =mod(230,11)= 20 + 10/11=10。而10的校验码为2,所以该公民的新身份号码应该为 510402197805023012。