高手坐镇(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的企业端相结合的移动电子商务.。如果今后想从事通信方面的工作, 建议你加强此方面的学习。