⑴ 这段c语言程序中每行都是什么意思
这个程序就是每次输入一个数,然后输出simon中的那句话,把n替换成每次输入的数字。具体用到的是C++语言中的函数和输入输出语句。
⑵ 求能在 win7 64位上可以兼容的C语言编辑软件vc6.0 我的邮箱是[email protected] 谢谢了
vc6.0如果你不是深入编程的话,在win764位上可以用。如果要用到MFC编程的话是不行的。vc6.0是很久之前的开发环境了。没有兼容win7的。如果你真的要用的话建议你用虚拟机装一个xp在里面运行。我都是这样用的。
⑶ 懂C语言的进 关于C语言例子详细剖析
//首先你这个程序有很多低级错误!,而且写得一塌糊涂,如果你是在某本书上看到的,直接可将那本书丢了,这是我的建议。基于你的问题,本人特写程序如下,有注释,认真看应该能看懂!!
/*
Simo game!,考察记忆力的游戏,提示数字1s,之后要求用户输入答案,并按相应规则计分
本程序没有实现真正的计分,而是只用用户的过关数简单代替,因为此程序没有提供提示功能
即当用户多次回答错误后,应让用户具有选择提示的选项,这样最终根据用户过关数和提示次数
(也可限定提示最大次数)通过某一函数即可达到计分效果
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <memory.h>
#include <assert.h>
#define MAX_SIZE (21) /*int的平方最大长度为20*/
#define INIT_LENGTH (2)
#define INCRE_LENGTH (2)
#define MAX_LENGTH (10)
#define MAX_RANK (((MAX_LENGTH)-(INIT_LENGTH)) / (INCRE_LENGTH) + 1) /*最大等级,等级从1开始*/
int mycmp(const char* src,const char* dest,int* err_bit,int n);
int main(void)
{
int i;
int rank = 1;
int seed;
int length = INIT_LENGTH;
char go_continue = 'Y';
char dgt[MAX_SIZE];
char answer[MAX_SIZE];
int err_bit[MAX_SIZE];
int next_rank = 1;
//提示信息
printf("Simo game!\n");
printf("remeber prompot's digits,and you have 1s,then the digits will disappear\n");
printf("you should review the digit\n\n");
seed = time(NULL);
srand(seed);
while((go_continue == 'Y' || go_continue == 'y') && rank <= MAX_RANK) /*rank <= MAX_RANK <=> length <= MAX_LENGTH*/
{
memset(err_bit,0,sizeof(err_bit));
if(1 == next_rank)
{
itoa((int)pow(rand(),2),dgt,10);
printf("%.*s",length,dgt);
clock_t start = clock();
for(;clock() - start < CLOCKS_PER_SEC;) /*睡眠1s*/
;
for(i = 0; i < length; ++i)
printf("\b");
for(i = 0; i < length; ++i)
printf("*");
printf("\n");
}
scanf("%s",answer);
if(mycmp(answer,dgt,err_bit,length) != 0) /*错误答案*/
{
for(i = 0; i < length; ++i)
if(err_bit[i])
printf("^");
else
printf(" ");
printf(" ----Error\n");
printf("continue this rank(y/n)?:");
scanf(" %c",&go_continue); /*忽略前导空白符*/
next_rank = 0;
}
else /*正确答案,通过本关*/
{
next_rank = 1;
printf("congratulate!,your answer is right!\n");
if(rank < MAX_RANK)
{
printf("continue next rank(y/n)?:");
scanf(" %c",&go_continue); /*忽略前导空白符*/
}
++rank;
length += INCRE_LENGTH;
}
}
if(rank > MAX_RANK)
printf("congratulate! you have win all ---- %d ranks\n",rank-1);
else
printf("you have win %d ranks\n",rank - 1);
return 0;
}
int mycmp(const char* src,const char* dest,int* err_bit,int n)
{
assert(n <= MAX_SIZE);
int resault = 0;
for(int i = 0; i < n; ++i)
{
err_bit[i] = (src[i] != dest[i]);
if(err_bit[i])
resault = 1;
}
return resault;
}
⑷ C语言中file函数链表读取txt文本出现了乱码
提3条修改建议,保证通过。
删除fflush(stdin);。fflush(stdin)是清除标准输入缓冲区,与文件读入不搭界。
将fscanf(fp,"%d",&q->num);中的"%d"改为"%d ",d后的空格会吸收掉文件中的广义空格。(前一句可改可不改,因为这一句会自动跳过广义空格)
将print函数中的printf("%d %d",q->score,q->num);一句改为printf("%d %d ",q->score,q->num);,以使输出第二个整数后回车,让版面标准化。(前面输出字符串时不需要,因为fgets函数会把 读进来放在字符串的最后)
⑸ 用C语言编写一个SIMON小游戏。
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>
intmain(void)
{
charanother_game='Y';
intcorrect=false;
intcounter=0;
intsequence_length=0;
time_tseed=0;
intnumber=0;
time_tnow=0;
inttime_taken=0;
printf(" ToplaysimpleSimon.");
printf(".");
printf(" Watchcarefully,asthedigitsareonlydisplayed"
"forasecond!");
printf(" Thecomputerwillremovethem,andthenpromptyou.");
printf("toenterthesamesequence.");
printf(" Whenyoudo,. ");
printf(" GoodLuck! PressEntertoplay! ");
getch();/*这里用getch就可以了,敲任意键不用回车*/
do
{
correct=true;//在默认的情况下,显示正确的输入。
counter=0;//初始化成功,并开始计数。
sequence_length=2;//最初的游戏序列长度。
time_taken=clock();//在游戏开始时记录当前时间。
while(correct)
{
inti;
sequence_length+=counter++%3==0;
seed=time(NULL);
now=clock();
srand(time(&seed));
for(i=1;i<=sequence_length;i++)/*for后面的分号去掉,否则下面的printf不是循环体*/
printf("%d",rand()%10);//输出一个随机数字。
for(;clock()-now<1*CLOCKS_PER_SEC;);
printf(" ");
for(i=1;i<=sequence_length;i++)/*这里问题同上*/
printf("");/*输出两个空格覆盖,要不然只能覆盖一半*/
if(counter==1)
printf(" Nowyouenterthesequence-don'tforgetthespaces ");
else
printf(" ");
srand((unsignedint)seed);
for(i=1;i<=sequence_length;i++)
{
scanf("%d",&number);
if(number!=rand()%10)
{
correct=false;
break;
}
}
printf("%s ",correct?"Correct!":"Wrong!");
}
time_taken=(clock()-time_taken);
printf(" Yourscorsis%d",--counter*100/time_taken);//输出比赛得分。
fflush(stdin);
printf(" Doyouwantoplayagain(y/n)?");
scanf("%c",&another_game);
}
while(toupper(another_game)=='Y');
return0;
}
看注释。
⑹ C语言一个简单的问题:输入一段文本,计算其中每个单词的出现频率:下面是代码
网站的域名绑定到,例如可以绑定到一级域名的博客,或网页,这样重新提交网络就可以收录了.
3,将网站的域名作跳转,跳转到网络,新浪,163,sohu等门户网站,重新提交后就可以了,
4,注册网络的联盟,加入网络的代码,在重新提交.
急不来的
通常的步骤是:
- 提交到网络,正常情况是1个月后将你的网站添加到搜索引擎的index
- 整理你的页面,让你的页面变得search engine friend,你可以到这个网站去看看有一些建议
- 到处去做你的网站的连接(提高搜索引擎访问你的网站的速度)
如何让网络收录网络给站长的建站指南
如何使您的站点被网络有效收录
给每个网页加上与正文相关的标题。如果是网站首页,则标题建议使用站点名称或者站点代表的公司/机构名称;其余内容页面,标题建议做成正文内容的提炼和概括。这可以让您的潜在用户快速的访问到您的页面。
请不要在标题中堆积与正文无关的关键词。
确保每个页面都可以通过一个文本链接到达。网络无法识别Flash中的链接,这些单元上的链接所指向的网页,网络就无法收录了。
页面间的链接,尽量使用平实的超链,而不是重定向跳转。使用自动跳转的页面,可能会被网络丢弃。
尽量少使用frame和iframe框架结构。
如果是动态网页,请控制一下参数的数量和URL的长度。网络更偏好收录静态网页。
在同一个页面上,不要有过多链接。在那些站点地图类型的页面上,请把重要的内容给出链接,而不是所有细枝末节。链接太多,也可能会导致无法被网络收录。
什么样的站点会受到网络欢迎
站点应该是面向用户的,而不是面向搜索引擎的。一个受到用户欢迎的站点,最终也会受到搜索引擎欢迎;反过来,如果您的站点做了很多针对网络的优化,但却给用户带来大量负面体验,那么,您的站点最终可能还是会受到网络的冷落。
网络更喜欢有独特内容的网页,而不是简单抄袭和重复互联网上已有内容的网页。对于已经被重复了千百遍的内容,网络可能会不予收录。
请谨慎使用您的站点链接。与一些垃圾站点做友情链接,很可能会使您的网站受到负面影响。因此,当有人很热情的要求您为他的站点提供友情链接时,请审视以下两点:
一,对方的站点在他那个领域是否是高质量的?站长间所谓的流量以及排名,很多都是用欺骗手段获取的,无法保持长久。
二,对方要求的链接名称是否和对方网站地位相称?用一个涵盖范围广泛的关键词来做一个内容非常局限的网站的链接名称,很可能会使您的网站受到负面影响。
经常保持内容更新。经常有新内容产生的站点,网络是会注意到,并且大力欢迎,而且会频繁造访。
网站登录问题
我的网站更新了,可是网络收录的内容还没更新怎么办?
答:网络会定期自动更新所有网页(包括去掉死链接,更新域名变化,更新内容变化)。因此请耐心等一段时间,您的网站上的变化就会被网络察觉并修正。
怎样使我的网站被网络收录?
答:网络免费自动收录您的站点。如果您希望网络尽快收录,可以到网站登录提交您的网址;只需提交网站首页,内部页面网络会自动抓取。
从提交到被收录,大约需要多久?
答:通常需要1-4周时间。
我不想让网络收录我的站点,该怎么办?
答:网络尊重和遵守robots协议,您可以写一个robots文件限制您的网站全部或部分不被网络收录。详情参见禁止搜索引擎收录的办法。
我的站点为什么在网络中搜不到?
答:可能的原因如下:
您可能还没向网络提交您的网站;
您已经登录了网站,但由于时间短,网络还未收录;
如果网络检测到您的网站无法访问,您的站点就有可能被网络暂时删除;
如果您的网站内容有不符合中国法律的地方,则无法被网络收录;
如果您的站点页面结构复杂,则可能无法被网络收录(详见如何使您的站点被网络有效收录);
如果您的网站被网络判别为垃圾站点,则可能被网络拒绝收录或者随时删除(详见网络关于垃圾网站的处理)。
如果您的网站的首页在网络搜索不到,则可能是由于您的网站不稳定使首页被判别为死链接导致丢失。您的网站稳定后,首页会重新在网络中被搜索到。 网络并不允诺能收录所有站点。如果有上述回答无法说明的问题,也可以发信到[email protected]询问。
我的站点在网络搜索结果中排名下降了,该怎么办?
答:排序变动很正常。一般情况下,只要您不断提高网站内容质量,让更多的用户喜欢您的网站,成为您的忠实用户,您的网站在网络的排名一般就不会很差。
网络关于垃圾网站的处理
如果您的站点中的网页,做了很多针对搜索引擎而非用户的处理,使得:用户从搜索结果中看到的内容与页面实际内容完全不同,或者站点质量与站点在搜索结果中的排名极不相称,从而导致用户产生受欺骗感觉,那么,您的网站就有可能被网络丢弃。
如果您的站点上的网页,大量都是复制自互联网上的高度重复性的内容,那么,您的站点也有可能被网络丢弃。
所以,当您的网站从网络消失,请先审视一下自己的站点有无问题。有任何意见,也可以反馈到[email protected]。您也可以向网络投诉搜索中遇到的垃圾网站或者网页,帮助网络保持搜索结果的质量。
让网络等搜索引擎收录您的网站当您发现在以下搜索引擎里,无法搜索到您或者您客户的网站时,您就打开以下登录口,填好申请表提交,等这些网站的工作人员审核通过后,您的网站就可以在上面搜索到了。
怎样才能让网络及时更新网站的收录数据?你有没有发现搜索引擎已经很久没有收录你的网站了,有没有方法能让搜索引擎及时更新你的网站收录数据,不知道那么就跟我来吧!(此处以网络搜索引擎为例)
1.在网络搜索引擎输入:site: (此处就是你网站的网址)得到网站收录数据.
网络一下,找到相关网页29600篇,用时0.001秒
2.在网络最底下找到
1 [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页 每10页点下去,一直点到最后一页,当出现
提示:为了提供最相关的结果,我们省略了一些内容相似的条目,点击这里可以看到所有搜索结果。 再点击提示上的连接. 3.最后再次输入:site:,是不是发现比原来少了很多页数了?不要害怕,已经达到让网络更新收录数据的目的了.一天以后就会发现重新收录更多了!
注意:如果你的网站有新的内容,而又未被收录的话,经验证会有有明显效果的。什么?没有新内容??那就增加你的网站内容吧…………
怎样避免被搜索引擎视为作弊 >一个网站要想成功注册,它起码应具备两个条件,一是网站本身要有较好的内容和设计,二是网站没有作弊行为。这里所谓的“作弊”,是指采用一些特殊的、有悖常规的网页设计手法,以期提高网站排名的行为。如何设计好网站,相关的资料很多,本文就不废话了。这里主要谈谈后者,即在提高网站排名的同时,如何避免被搜索引擎视为作弊而拒绝注册。 那么,在搜索引擎看来,哪些行为算作弊呢?这里罗列了一下,从中你可看到,现在有些人还视为“密技”的东西,其实已经过时了。
>
> 堆砌页面关键字:为了增加某个词汇在网页上的出现频率,而故意重复它。这是有人常用的花招,不过,现在很多搜索引擎都能识破它。它们通过统计网页单词总数,判断某个单词出现的比例是否正常。一旦超过“内定标准”,就对你的网页说“ByeBye”了。
>
> 放置隐形文本:所谓的“鬼页法”。为了增加关键字数量,网页中放一段与背景颜色相同的、包含密集关键字的文本,访客看不到,可搜索引擎却能找到,过去一度还真能提高网站排名,但现在,主要搜索引擎都能识别出来,照样玩不通了。
>
> 安插微型文本:与“鬼页法”相似,只是文本更些�更分散、更隐蔽。但是,对于敏感的搜索引擎来说,仍然是枉费心机。
>
> 网页重定向:使用META刷新标记、CGI程序、Java、Javascript或其它技术,当用户点击一个链接时,自动跳到另一个网页。有人正是用这种方法,欺骗人们进入并不想去的地方。因此,有些搜索引擎(如Infoseek),对此类网页也很反感,一般不予登记。
>
> 滥用Meta标记关键字:有人为增加关键字的出现次数,在语句中,重复关键字,或者加入与网站内容毫不相关的热门词汇。这种作弊行为,大部分搜索引擎也能识破。
>
> 滥用门户网页:门户网页(也称“桥页”),是指为了获得好的排名,而专门针对各搜索引擎排序算法设计的网页。尽管今天,多数搜索引擎并不反对这种作法。但俗话说:“物极必反。”建立太多具有相近关键字的门户网页,会招致搜索引擎的反感而无法成功注册。
>
> 连续注册:有人为加大保险系数,在一天之内,将一个网页重复提交给同一个搜索引擎,其实,这种作法适得其反。
>
> 重复注册:有人以为,将一个网页简单复制成多个网页,然后,给它们安上不同的名字,并分别予以注册,会增大访问量,结果,搜索引擎会认为你在滥用它,而拒绝登记你的网站。
>
> 偷换网页:是指一个网页成功注册并获得较好排名后,用另一个内容无关的网页(如产品广告)来替换它的行为。
>
> 张冠李戴:上面提到的门户网页,只适用于Altavista这类自动登录的搜索引擎,如果提交给Yahoo这类人工分类的目录式搜索引擎,它就会认为你在作弊。
>
>
突破页数限制:一些搜索引擎允许每个用户每天或每周提交的网页数量是有限制的。例如,Altavista每天允许10页;HotBot允许每天50页;Excite允许每周25页;Infoseek允许每天50页(但使用e-mail注册,没有页数限制)。请注意,这并不是说,搜索引擎每天或每周只能为你登录以上页数,而只是允许你提交的页数。还不明白?那就举个例吧,对于Excite而言,每周只允许你提交25页,如果你的网站有1000页,那该怎么办呢?就提交25页即可!余下的Excite会自己检查到,并将编入索引中。如果你强行突破这个限制,那么,搜索引擎就会认为你在作弊,反而不予注册。
>
> 上面这些条款似乎很明显、很容易区分,但有时我们却可能不知不觉犯上。例如,你有一个网页,背景是白色,在这个网页上,你设计了一个表格,其背景为蓝色、文字为白色,这种设计应该说也是完全正常的,但如果你到搜索引擎Infoseek去注册,它却不理你。为什么呢?它认为你在作弊!在Infoseek看来,表格中的白色文本,实际是置于白色的网页背景上,也就是说,网页文本与背景颜色相同,这就符合“鬼页法”的作弊特征。而这一点,可能你自己根本没有意识到。还有一例,有时因设计需要,或者网站已迁移到其它地方,通常我们会用到网页重定向,但对于Infoseek等搜索引擎而言,这也是不可容忍的作弊行为。另外,Infoseek等搜索引擎还要求,不要在多个网页上布置指向同一个网页的链接。例如,很多人喜欢在各个网页放上“返回主页”的链接,其实就属于这种情况。这种司空见惯的设计,居然也被看成作弊,真是太苛刻了。不过,对此Infoseek在真正执行时,似乎也并不是很严格,一些这样设计的网页,它照样登录了(你也碰碰运气?)。总体上说,这些限制都是为了对付真正的作弊者,使搜索引擎的检索结果更加准确有效,但事实上,的确也错怪了一些好人。如果万一你碰上这种情况怎么办,搜索引擎到底会怎样处罚你呢?
>
> 跟不少网主一样,笔者以前对此不甚了解,以为自己的某个网页违项,会导致整个网站被封杀。其实,事实并非如此!因为运作搜索引擎的人也知道,有时他们搜索引擎判定的“作弊”,实际是一种正常合法的设计,只是因为搜索引擎自身还不够“聪明”,无法准确判断是故意作弊,还是偶然巧合。所以,他们通常不会因为某网页象在作弊,就拒绝登记整个网站,而只是对有违规嫌疑的网页进行处罚——降低排名或不予登记,而其它的合法网页不会受到影响。此时,你只需将这个网页修改,并重新注册即可。除非你有意作弊,肆无忌惮违反上述多项规则,或者由于你提交的大量垃圾网页,对搜索结果造成明显不良影响,那么,你的整个网站将被永远踢出门外。当然,也有个别搜索引擎(如HotBot)政策更加宽松,甚至对故意作弊者,也没有永远拒绝登记的规定。只要它认为你没有攻击或侵害到它,一般不会删掉你整个网站的索引,不过,这个尺度掌握在人家手里,劝你还是别去试它的耐性。
>
> 作为一名网主,明白了哪些行为是作弊,你就应该在允许范围内,去探索如何获得较高排名,以增大网站访问量,让尽可能多的人知道你的产品、服务或了解你本人,只有这样,成功注册才有实际意义。
>
> 使网络有效收录
>
> 网络喜欢结构简单的网页,具有复杂结构的网页可能无法顺利登录网络。您在进行网页设计时应尽量:
>
> 1. 给每个网页加上标题
>
> 网站首页的标题,建议您使用您的网站名称或公司名称,其它网页的标题建议与每个网页内容相关,内容不同的网页不用相同的标题。
>
> 2. 不要把整个网页做成一个Flash或是一张图片
>
> 网络是通过识别网页源代码中的汉字来认识每一个网页的。如果您的整个网页是一个Flash或一张图片,网络在网页中找不到汉字,就有可能不收录您的网页。
>
> 3. 不对网页做重定向
>
> 重定向的网页可能不容易登录网络。
>
> 4.不在网页中使用Frame(框架结构)
>
> 5.不在网页中使用过分复杂的JavaScript
>
> 某些Java Script的内容对于搜索引擎是不可见的,所以不能被识别和登录。
>
> 5.静态网页能更顺利登录网络,动态生成的网页不容易登录网络
>
> ·如果您的网页url中含有如asp、?等动态特征,网页就可能被认为是动态网页。
>
> ·如果您的网站中有很多网页必须做成Frame结构或动态网页,那么建议您至少把网站首页做成简单的网页,并且对网站内的一些重要网页,在首页加上链接。
>
> 6. 不要对搜索引擎进行作弊
>
> 作弊的网站不能登录网络,即使登录后也随时可能被删除。
>
> 作弊网站定义
>
> 对搜索引擎作弊,是指为了提高在搜索引擎中展现机会和排名的目的,欺骗搜索引擎的行为。
>
> 以下行为都可能被认为是作弊:
>
> · 在网页源代码中任何位置,故意加入与网页内容不相关的关键词;
>
> · 在网页源代码中任何位置,故意大量重复某些关键词。即使与网页内容相关的关键词,故意重复也被视为作弊行为;
>
> · 在网页中加入搜索引擎可识别但用户看不见的隐藏文字。无论是使用同背景色文字、超小字号文字、文字隐藏层、还是滥用图片ALT等方法,都属于作弊行为;
>
> · 故意制造大量链接指向某一网址的行为;
>
> · 对同一个网址,让搜索引擎与用户访问到不同内容的网页(包括利用重定向等行为);
>
> · 作弊行为的定义是针对网站而不是网页的。一个网站内即使只有一个网页作弊,该网站也被认为是有作弊行为;
>
> · 有链接指向作弊网站的网站,负连带责任,也会被认为是作弊(但是,作弊网站上链接指向的网站,不算作弊)。
>
> 作弊网站害处
>
> 根据网页的作弊情况,会受到不同程度的惩罚:
>
> · 较轻微的惩罚,是系统在给网页排名时略为降低该网页的排名;
>
> · 较常见的惩罚,是作弊网站的某些关键词(或所有关键词)的排名降到其它任何网站之后;
>
> · 较严厉的惩罚,对于作弊行为和后果特别恶劣的网站,将从网络中消失;
>
> · 特别补充,含恶意代码或恶意插件等用户极端反感内容的网页,虽然不是作弊,但只要用户投诉,一经确认也会被网络拒绝收录;
> = = = = = = = = = = = = = = = = = = = =
致
礼!
simon
[email protected]
2006-06-07
Google官方确认AdSense有助于网页收录
>Google官方确认AdSense有助于网页收录
>
>Google的网页收录的其中一种途径是通过Googlebot的爬行来实现的,也就是说,Google派出它自己的网络蜘蛛,主动去抓取有价值的网页内容。类似地,Google的AdSense也有自己的bot,它的名字为MediaBot。它会自动去到放置了AdSense广告代码的网页,然后对网页内容进行分析,以投放与网页内容相关的广告。但一直以来都有一个争论,那就是到底AdSense的MediaBot与Googlebot有什么区别?MediaBot在判断广告相关网页的时候,会不会也对这个网站在Google收录及排名等方面有一定的好处呢?也就是说,投放了AdSense广告,会不会有助于改善自己的网站的Google收录及排名呢?
>
> 根据SEJ的消息,Google的一名高级工程师及主管Matt Cutts已经正式确认,AdSense派出来的MediaBot在抓取网页内容后,会把部分结果提交至BigDaddy的数据库里。Matt解释说,这是因为两种bot都在不断地抓取网页,因此为了节省资源,MediaBot会帮Googlebot完成部分网页抓取工作。但Matt同时也给出警告,如果你的网站提供给MediaBot的内容与提供给Googlebot的内容完全不同,那么你就会“有麻烦”。因为Google会认为你在作弊。
>
> 我认为从Matt给出的讯息里可以证明,在网站上投放了AdSense的广告,的确是有助于你的网站被Google收录。比如,收录得更快更多。但并不一定会提高你的网站排名。有这方面经验的朋友应该会想到其它办法,从Matt的话出发。
>来自幻灭的麦克风
搜索引擎原理-网络蜘蛛和ROBOTS
>搜索引擎原理-网络蜘蛛和ROBOTS
>
>一、网络蜘蛛基本原理
>
> 网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
>
> 对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100×2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要 340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。
>
> 在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。
>
广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。
>
> 由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层, I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。
>
> 网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全**的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
>
> 网站与网络蜘蛛
>
> 网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。今年4月,淘宝就因为雅虎搜索引擎的网络蜘蛛抓取其数据引起淘宝网服务器的不稳定。网站是否就无法和网络蜘蛛交流呢?其实不然,有多种方法可以让网站和网络蜘蛛进行交流。一方面让网站管理员了解网络蜘蛛都来自哪儿,做了些什么,另一方面也告诉网络蜘蛛哪些网页不应该抓取,哪些网页应该更新。
>
> 每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User- agent,用于标识此网络蜘蛛的身份。例如Google网络蜘蛛的标识为GoogleBot,Bai网络蜘蛛的标识为BaiDuSpider, Yahoo网络蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。下面是博客中)2004年5月15日的搜索引擎访问日志:
>
> 网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下。网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限制,可以用以下两行来描述:
>
> User-agent: *
> Disallow:
>
> 当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。
>
> 网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要被跟踪。
>
> 关于Robots.txt的语法和META Tag语法,有兴趣的读者查看文献[4]
>
> 现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。
>
> 内容提取
>
> 搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。
>
> 对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。
⑺ 请教c语言编程问题!!
do
c=a%b;
a=b;
b=c;
while(c!=0);
加大括号,修改为:
do
{
c=a%b;
a=b;
b=c;
}while(c!=0);
⑻ 《C语言入门经典》中第四章simon计算分数时,score=10*(digits-((tries%3)==1))是什么意思谢谢
tries%3取余后,如果·有余数==1就成立,
((tries%3)==1)
结果就是1
其他应该不难了
⑼ C++函数不需要声明
C++里调用函数是否需要声明需要注意以下两点:
自己实现的函数,在调用的地方之前实现,无须声明,否则需要声明。
使用系统提供的函数,包含头文件即可使用。
申明和定义之间的区别。
申明-- 不开辟内存,仅仅告诉编译器,申明的部分存在,要预留一点空间。
定义-- 开辟内存。
申明 属于 预编译范畴的。最好写在头文件中(楼主,自定义头文件学了没有啊?)(申明都写在头文件中,只是一种好的编程习惯)
因为 在编译的时候,编译器先处理一些特殊数据(宏定义,函数的申明,变量的申明),在这个过程中,编译器 通过申明 可以预测整个定义需要的内存大小,并且 把这些大小预留起来,留给定义的时候使用(因为虽然定义,但是在 main函数里面没有调用,一样的不分配内存)。
如果不事先申明,直接定义,有可能会造成系统崩溃,出现内存不足,不能分配。 然而现在内存都是1G左右了,所以一般空间都足够,所以你也可以不申明直接定义函数。
但是一旦内存紧张,就会出错,而且程序简洁性就很低。(不看到定义,还不知道原来还定义了这么一个函数!!!)
还有 变量也一样,标准的都是 先申明在定义。
extern int i; //申明
int i=0; //定义并初始化为0
int i; //定义
.。。。。。。。。。。。。。。。。。
所以 从现在其要养成良好的编程习惯
先申明,在定义。
申明最好都放在 一块,并且都在头文件中(为了便于管理)。
⑽ 学c语言到循环这一章难住我了
C的话 强烈推荐谭浩强的C程序语言设计
很多初学者都是通过这本书步入编程的殿堂的.(我就是一个,呵呵)
编程一开始遇到挫折很正常,最重要的是要有毅力,一遍看不懂,看两遍,不行看三遍... 静下心来慢慢看.现在你遇到的循环还不算难,后面的指针,估计又要让你头晕了. 没关系,只要你能坚持下来,最后会觉得海阔天空.