高手坐镇(20)

数字职场

编程开发领域很广,开发途中遇到的问题千奇百怪,碰到问题找不到解决方法怎么办?需要高人指点!为此,我们特意开设此栏目,邀请四方开发高手来帮助大家。如果你在开发途中遇到问题,如果你有能力解决这些问题,欢迎与我们联系,来信请发到pcw-chendx@vip.sina.com。

监控程序运行

高手:李洪刚

题目难度:★★★★★

读者来信:我的电脑有一个程序必须24小时运行,但是该程序有时会出错自动关闭,我想编一个小程序自动监控它的运行,在它关闭时将它重新启动。我想请教一下,这个程序需要怎么设计?

软件开发者 李洪刚: 要监测程序的运行状态,就需要使用定时器控件来定时监控,一旦发现程序自动关闭,就立即重新启动它。 我以VB为例介绍监控程序如何开发,在VB窗体中添加2个按钮和1个Timer控件。

按钮1是开始监控,按钮2是停止监控,Timer每秒监测一次“特定程序”是否在运行,如果没有运行,就启动它。关键代码如下(完整代码请到http://www.shudoo.com/bzsoft下载)。

Private Sub Command1_Click()

Timer1.Enabled = True '计时器开始

End Sub

Private Sub Command2_Click()

Timer1.Enabled = False '计时器停止

End Sub

Private Sub Form_Load()

Timer1.Interval = 1000 '监控间隔为1秒

End Sub

Private Sub Timer1_Timer()

'如果没有找到特定程序(本例假设的是计算器),就立即启动它

If FindWindow(vbNullString, "计算器") = False Then

Shell "calc.exe"

C语言基础语法错误

高手:顾客

题目难度:★★

开发QQ群:我是一名才学习C语言没有多久的学生,我写的C语言程序,编译时出错了,大家帮我看看错在哪里。代码如下所示:

#include

#define F(X) (A)%(B)

int fun(int b);

{

int b=1;

for(b=1;b<=a;b++)

b=b++;

return a;

}

main()

{

int a;

printf("INput a sun\n");

scanf("%d",&a);

if(F(X)=1)

printf("F(x)=1",1);

else

printf("F(x)=0",0);

}

高级工程师 顾客:这位同学和很多初学者一样,犯了很多基础语法错误,下面我来一一指正。

错误1:int fun(int b);后面不应出现“;”。

错误2:int b=1;变量b重复定义了。

错误3:for(b=1;b<=a;b++)和return a;中的变量a未定义。

错误4:应在main()前面加void,意为无返回值。

错误5: #define F(X) (A)%(B)中的A和B都未定义。

素数判断的奇怪问题

高手:顾客

题目难度:★★★★

开发QQ群:我编了一个程序,判断输入的数字是不是素数,运行后出现奇怪的问题,输入非素数回车后就显示结果,输入素数却要两次回车才能显示结果,这到底是为什么?

高级工程师 顾客:这确实是一个“奇怪”的问题,我们来一步步来分析下这个问题。输入数为素数成立时,所执行的代码中比输入非素数多用了一次回车,其本质也就是从键盘接收一个字符。

当判断是不是素数后,就不需要接收字符了。如果接收了字符,那应该是程序多了一个“Press any key to continue”,所以应该重点监测getch()、gets()和getchar()的执行次数。很多C语言新手常常使用getch()来暂停程序,建议使用标准的getchar()。

通信工作需要J2EE

高手:李洪刚

题目难度:★★★★★

开发QQ群:上课的时候老师提到J2EE,这东西我都没接触过。我以后想从事通信方面的工作,不知道需要掌握J2EE吗?

软件开发者 李洪刚:通信方面的应用主要有两类,一类为企业服务,一类为个人服务, 在企业服务上,会用到J2EE。比如很火的“手机支付”,就是基于J2ME的用户端和基于J2EE的企业端相结合的移动电子商务.。如果今后想从事通信方面的工作, 建议你加强此方面的学习。