高手坐镇(23)

编程学堂

求助邮箱:pcw-chendx@vip.sina.com。欢迎高手加入我们的答疑团队。

PHP自学 PHP 要看哪些书

题目难度:★★

读者来信:看了第17期《自学C语言要看哪些书》,编辑回答得非常详细,所以我也来问一个问题:我想学的是PHP,那自学 PHP 要看哪些书?编辑不要让我失望哟!

编辑 陈邓新:你都这么说了,这个问题我一定不会忘记的。当前,PHP网站已经成为主流,学习PHP编程是一个不错的选择。如果你有一定的基础,例如学过其他编程语言,特别是熟悉HTML语言,买书的必要性就不是很大,看看PHP开发文档就足够了(下载地址:http://www.icpcw.com/bzsoft),或者看看《PHP开发手册》也成。

如果你没有基础,最好先从简单的语法入手,再逐渐过渡到函数利用等。建议你最好下载或者在线观看一些PHP视频教程,网上有很多这样的视频教程,比看书直接多了。此外,你还要时常在一些PHP专业论坛中逛逛,可以增长见识快速提高自己的编程能力。

C语言只输出一个空格

题目难度:★★★★

读者来信:我在网上看到一道题目,要求将输入的内容直接输出,但是输入内容中有连续一个以上的空格时,只输出一个空格。这道题怎么做?希望得到《电脑报》高手的指点。

资深教师 李严同:这种题有很多种解决思路,关键是判断空格。下面我提供一种解决方法:

#include

#define SIZE 81

int main(void) {

char str_in[SIZE], str_out[SIZE], * p_in = str_in, * p_out = str_out;

gets(str_in);

while(*p_in) {

if(*p_in == " && *(p_in + 1) != ") {

*p_out++ = *p_in++;

} else if(*p_in == "&& *(p_in + 1) == ") {

p_in++;

continue;

} else {

*p_out++ = *p_in++;

}

}

*p_out = '\0';

puts(str_out);

return 0;

}

VC浏览器是怎么设计的

题目难度:★★★★★

读者来信:最近跟别人打赌,要独立设计一款浏览器。当时吹牛说了大话,现在追悔莫及。我学VC也不过一两年,还从来没有独立开发过任何程序。我希望得到《电脑报》高手的帮助,最好给我一份浏览器的源代码,一定要帮我!

程序员 故乡的云:这是什么情况,汗!如果你希望得到商业浏览器的源代码,这个兄弟就爱莫能助了,但是普通的浏览器源代码,还是找得到的(下载地址:http://www.icpcw.com/bzsoft)。浏览器的设计难点就是界面,首先需要考虑工具条、地址栏、动画控件的容器,然后要考虑工具栏如何才能扁平化,接着要考虑如何弹出下拉菜单、如何收藏网页等。关键代码如下:

{//判断是否为显示收藏网页的下拉箭头;

CMenu* pPopup;

pPopup = GetMenu()->GetSubMenu(3);

pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd());

}

VB石头剪刀布

题目难度:★★★

读者来信:我想设计一个VB小游戏“石头剪刀布”,希望在思路上得到一些指点,谢谢啦!

编辑 陈邓新:这个游戏不难,主要是掌握系统如何随机给出答案,关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):

//系统随机做出选择并进行判断

Private Sub Process(ByVal UParam As Long)

Randomize '系统随机给出数字

Dim CParam As Long

CParam = Int(Rnd * 3) '系统随机给出数字

Select Case UParam

Case 0

Select Case CParam

Case 0

Call MsgBox("用户出剪刀,电脑也出剪刀,所以是平手")

Case 1

Call MsgBox("用户出剪刀,电脑出石头,所以是电脑赢")

Case 2

Call MsgBox("用户出剪刀,电脑出布,所以是用户赢")

End Select

Case 1

Select Case CParam

Case 0

Call MsgBox("用户出石头,电脑出剪刀,所以是用户赢")

Case 1

Call MsgBox("用户出石头,电脑也出石头,所以是平手")

Case 2

Call MsgBox("用户出石头,电脑出布,所以是电脑赢")

End Select

Case 2

Select Case CParam

Case 0

Call MsgBox("用户出布,电脑出剪刀,所以是电脑赢")