博文

赋值语句作为循环条件的问题(2005-08-20 20:12:00)

摘要:吃惊中,我以为这个应该是无限的原来表达式 x = y 的值就是 x 的值啊(赋值成功,若赋值不成功呢?)---------------------------------#include void main(){  int x = 3, y = 2;  while(x = y){   printf("x = %d\ty = %d\t(x = y) = %d", x, y, x = y);   y--;   printf("#\n");   continue;  }}该程序输出结果为:x = 2   y = 2   (x = y) = 2#x = 1   y = 1   (x = y) = 1#说明循环体执行了两次......

阅读全文(3243) | 评论:0

计算某一天在该年中的天数(2005-08-20 19:03:00)

摘要:int dayChange(int year, int month, int day){  int days[12] =        {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};  int d = days[month - 1] + day;  //润年2月以后多加一天  if(month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))d++;  return d;}......

阅读全文(3279) | 评论:2

(转)满足任意精度的概率事件发生器(2005-08-20 16:43:00)

摘要:rickone 的 BLOG http://programfan.com/blog/article.asp?id=3860 #include<iostream.h> #include<time.h> #include<stdlib.h> #define MinProb 3.05185094759972e-5 bool happened(double probability)//probability 0~1 {     if(probability<0)return false;     if(probability<MinProb)         return rand()==0&&happened(probability/MinProb);     if(rand()<=probability*RAND_MAX)         return true;     return false; } MinProb是理论上的最小发生概率,为什么会这样,因为计算机是离散的,它永远只能得到有限范围内的随机离散数。 bool happened(double probability); 是按概率probability发生的随机事件发生器,如当probability=0.5时,将等概率得到真或者假,当为其它值时,将按probability的概率得到真,以1-probability的概率得到假。 如果probability比较大,MinProb是足够精确的,如0.5和0.5000001是有足够精确相等的,它相当于一个大概率加一个小概率,小概率被‘吃’掉了。 而小概率事件单独发生能不能突破MinProb的极限呢? 我昨天睡觉的时候想出来了这样的算法,从理论上是可以无限精确的,即任意小的小概率事件都可以得到。 其实原理非常简单,即独立事件同时发生的概率等于各事件的概率之积。举个例子:......

阅读全文(370) | 评论:0

产生任意范围内的等概率随机数(2005-08-20 16:43:00)

摘要:C提供的标准随机函数是 rand(),返回 0 ~ RAND_MAX,共 RAND_MAX + 1 个随机数,如果我需要更大的随机数范围应如何做? 而且 rand() 返回的是伪随机数,就是说不管运行多少次结果都是一样。用srand() 解决。 试设计: long random(long n);返回 0 ~ n-1 间的等概率随机数 分析思路: 以 0 ~ 1的等概率为中介,先将 rand() 返回的概率数转化到 0 ~ 1 之间,在转化到 0 ~ n 之间。 代码如下: #include <stdio.h> #include <stdlib.h> #include <time.h> long random(long n) {   double r = (double)rand() / RAND_MAX;   return (long)(r * n); } int main() {   long n, t1 = 0, t2 = 0;      while(true){     printf("输入 n 值:");     scanf("%ld", &n);     srand(time(NULL));     for(int i = 0;i < n * 100;i++){       long t = random(n);       if(t == 1)t1++;       else if(t == n - 1)t2++;     }     printf("出现次数\n");     p......

阅读全文(456) | 评论:0

一道算法题(2005-08-20 20:17:00)

摘要:ilpr  8月17日 发布 http://programfan.com/club/showbbs.asp?id=98465&page=1 例如整数121,如何实现1-10十个数字,在不重复使用的情况下,分成5组,两两一组相乘,然后等到的五个积相加,和等于121!用什么算法求出这五组组合!   -------------------------------------- rickone 的算法(8月18日) #include#includeint s[10];int v[11];void dfs(int c, int ob){    int i;    if(c == 10){        int sum = 0;        for(i = 0;i < 10;i += 2)            sum += s[i]*s[i+1];         if(sum == ob){ //输出组合            for(i = 0;i < 10; ++i)                cout<......

阅读全文(2885) | 评论:0

完美正方形(2005-08-20 20:17:00)

摘要:完美正方形的意思就是:把一个大的正方形分割成若干个大小不相等的小正方形 请用程序画出一个完美正方形来 这个程序该怎么写呢? 以下是一个图例 还有很多种解法 谁会写贴出来啊 想了好多天了 http://img131.photo.163.com/billgacsli/14264265/340082705.gif 完全正方形      正方形是每一個人都非常熟悉的圖形,其中卻隱藏了一個奇妙的“數學之謎”:      問題:用一些互不相等的小正方形,能夠拼出一個大正方形嗎?       在數學上這個大正方形稱之為完全正方形,要作出一個完全正方形可不是一件容易的事。   1930年蘇俄數學家魯金認為這種完全正方形不存在。   1939年sprague 造出第一個完全正方形,它是由55個小正方形組成,邊長為4205單位。   1939年英國劍橋大學四個學生Brooks, Smith, Stone, Tutteru.就曾經沉迷於此問題,花了一段很長的時間,最後在理論的指導下,找出了由28個小正方形組成的完全正方形,邊長為1015單位。   1948年Wilvocks 造出一個由24個小正方形組成的完全正方形,邊長為175單位。至目前為止已經出爐2000多個24階完全正方形。   1967年Wilvocks 造出一個由25個及26個小正方形組成的完全正方形。   1976年荷蘭的數學家Duijvestijn更在電子計算機的幫助下,又發現一個由21個小正方形組成的完全正方形,邊長為112單位。並且證明,它是由最少數目的小正方形組成的完全正方形。       完美正方形的研究並未到此結束,一方面,上面這一些結果的發現或證明都要藉助於電腦,導出這些結果的初等證明是非常有意義的。另一方面,人們還沒有發現究竟哪些正方形是完全正方形?或者說沒有給出一個判斷一個正方形是完全正方形的標準,比如說完全正方形的最小整數邊長是多少?對於哪些正整數r存在r階完全正方形?是否存在22階完全正方形?這些都有待人們繼續研究。 ......

阅读全文(359) | 评论:0

QQ“缘”病毒清理记(2005-08-17 23:01:00)

摘要: 中着过程: 一个网友发送了如下消息,点击后即中着。 “今天在网上下了本电子书,书名叫《缘》,写得不错,而且书的作者的名字很巧…………点击下面这个地址可以下载这本书” 中着表现: qq聊天异常,有时会不知不觉中给好友发送类似信息; IE首页尽管意设置为blank,但启动IE时仍会出现19ku.com网站。另外在弹出一个窗口,××××,什么免费电影什么的。 根据“详解六大QQ病毒特征及清除方法”提供的方法安步就班操作 首先查找noteped.exe,没查到。到windows目录下一看,有两个notepad.exe,遂怀疑其中一个必有问题,双击运行,果然有个就是当时中招时的反映。正常notepad大小为64.5KB,版本号为5.1.2600.0;而其大小仅为18.5KB,版本号为4.1.0.4600,创建日期即为中招日期,而正常的notepad.exe的创建日期应为装操作系统的日期。而且,图标亦有所不同。遂肯定之,删之。 system目录下亦然,删之notepad.exe(同上)。同时,发现两个可疑文件,创建日期是中招日(2005-8-14),文件名为:ccevt.exe(18.0KB)、wsetdll.exe(18.5KB),版本号均为4.1.0.4600。亦删之,wsetdll.exe删除失败,发现任务管理器里正在运行,结束之并重新删除。taskmgr.exe文件并未发现。 system32目录下亦然。有连个notepad.exe文件,删除其中一个notepad.exe(创建日期及版本号均相同,且大小为18.5KB)。 运行regedit,在HKey_Local_Machine\software\Microsoft\windows\CurrentVersion\Run下将wsetdll.exe项删除。同时也删除了ccevt.exe 至此,删除完毕 重启…… 搞定! 收工!......

阅读全文(4282) | 评论:0

(转)详解六大QQ病毒特征及清除方法(二)(2005-08-17 22:33:00)

摘要:四、“武汉男生”病毒   病毒特性:  此病毒是“武汉男生”的一系列新变种,病毒发作后会利用QQ聊天工具进行传播,定时给QQ网友发送包含网址的信息来诱使用户点击,该网页利用了IE的Object Data漏洞下载并运行病毒本身,该漏洞是由HTML中OBJECT的DATA标签引起的。对于DATA所标记的URL,IE会根据服务器返回的HTTP头来处理数据。如果HTTP头中返回的URL类型Content-Type是Application/hta,那么该URL指定的文件就能够执行,无论IE设置的安全级别有多高。  该变种较明显的特点是,病毒运行后,除定时发给QQ网友同样的网址外还会趁机盗取“传奇”游戏的帐户、密码以及其他信息,并以邮件形式发给盗密码者,还会结束多种反病毒软件,以保护自身不被清除。   (1)如果点击病毒网页,将会显示美女图片,而同时弹出一个标题为“asp空间”的不可见窗口。此网页利用IE漏洞,下载并运行leoexe.gif和leo.asp文件,其中leoexe.gif并不是图像文件,而是exe类型的病毒体,leo.asp是病毒释放器;  (2)病毒一旦运行,将结束大部分杀毒软件、防火墙以及某些病毒专杀工具;  (3)每隔一段时间给QQ网友发送信息  (4)病毒运行后会复制自身到系统目录下,文件名是updater.exe、Systary.exe、sysnot.exe,并在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices中添加:“windows update” = “%安装目录%\system\updater.exe” %安装目录% 是Windows 系统的安装目录,在不同系统下该目标表现可能不同,可能的有:c:\windows;c:\winnt 等。  (5)修改文本文件(*.txt)关联和可执行文件关联,直接指向病毒本身,如果用户运行任意的txt文件和exe文件都会激活病毒。  (6)病毒会在计算机中搜索传奇游戏的帐户、密码以及其他信息,发送到指定的E-Mail信箱。   清除病毒  1、删除病毒在系统目录下释放的病毒文件  2、删除病毒在注册表下生成的键值  3、运行杀毒软件,对病毒进行全面清除  五、“爱情森林”病毒   (一)病毒特征  该木马程序原始文......

阅读全文(2581) | 评论:0

(转)详解六大QQ病毒特征及清除方法(一)(2005-08-22 10:59:00)

摘要:来源:http://www.qqday.com/Article/qqmiji/fangfanjiqiao/200505/154.html 一、“QQ尾巴”病毒   病毒主要特征   这种病毒并不是利用QQ本身的漏洞 进行传播。它其实是在某个网站首页上嵌入了一段恶意代码,利用IE的iFrame系统漏洞自动运行恶意木马程序,从而达到侵入用户系统,进而借助QQ进行垃圾信息发送的目的。用户系统如果没安装漏洞补丁或没把IE升级到最高版本,那么访问这些网站的时候其访问的网页中嵌入的恶意代码即被运行,就会紧接着通过IE的漏洞运行一个木马程序进驻用户机器。然后在用户使用QQ向好友发送信息的时候,该木马程序会自动在发送的消息末尾插入一段广告词,通常都是以下几句中的一种。   QQ收到信息如下:   1. HoHo~~ http://www.mm**.com刚才朋友给我发来的这个东东。你不看看就后悔哦,嘿嘿。也给你的朋友吧。   2. 呵呵,其实我觉得这个网站真的不错,你看看http://www.ktv***.com/   3. 想不想来点摇滚粗口舞曲,中华 DJ 第一站,网址告诉你http://www.qq33**.com.。不要告诉别人 ~ 哈哈,真正算得上是国内最棒的 DJ 站点。   4. http//www.hao***.com 帮忙看看这个网站打不打的开。   5. http://ni***.126.com 看看啊. 我最近照的照片~ 才扫描到网上的。看看我是不是变了样?   清除方法   1.在运行中输入MSconfig,如果启动项中有“Sendmess.exe”和“wwwo.exe”这两个选项,将其禁止。在C:\WINDOWS一个叫qq32.INI的文件,文件里面是附在QQ后的那几句广告词,将其删除。转到DOS下再将“Sendmess.exe”和“wwwo.exe”这两个文件删除。   2.安装系统漏洞补丁   由病毒的播方式我们知道,“QQ尾巴”这种木马病毒是利用IE的iFrame传播的,即使不执行病毒文件,病毒依然可以借由漏洞自动执行,达到感染的目的。因此应该敢快下载IE的iFrame漏洞补丁。   二、QQ“缘”病毒   病毒特征:   该病毒用VB语言编写,采用ASPack压缩,利用QQ消息传播。运行后会将IE默认首页改变为......

阅读全文(4262) | 评论:0

数的拆分问题(2005-08-17 18:39:00)

摘要:把任意一个整数n>3,如何拆分才能让(不能重复)而且分开后所有数的和等于原数,而且能组合出任意一个数例如把100拆分,拆分后的数和等于100,而且能组成1~100之间的任意一个数 以下是我的程序#include using namespace std;int main(){  int m = k = 1, n;      cin >> n;  while(m < n){    cout << k << " ";    k *= 2;        m += k;  }  cout << n - k + 1;      system("pause");}......

阅读全文(841) | 评论:0