博文
如何判断字符串中的字符是汉字.(2005-10-12 20:48:00)
摘要:
如何判断字符串中的字符是汉字(或全角字符)? [所有相关帖子]
BOOL isChineseChar(const char ch)
{
if( ch & 0x08 )
{
// ch 为汉字或全角字符
return TRUE;
}
return FALSE;
}
链接:http://www.vckbase.com/bbs/prime/viewprime.asp?id=495
......
论坛灌水机(2005-09-27 17:58:00)
摘要:一、“灌水机”简介:
在论坛里面大量的贴出没有任何意义的文章,这种做法在网络上叫做“灌水”,实际上这是一种信息垃圾,大量的垃圾发送到论坛上面就形成了信息炸弹,所以灌水机具有一定的攻击性,它的基本编程思路和上面的内容类似,是一种演变出来的工具。不过于上面的漏洞扫描器不同的是:灌水机需要使用POST方法、而不是GET方法向服务器发送请求。
有关POST的定义如下:
当浏览器将数据从一个填写表单传给服务器时,发生POST操作。对于POST,QUERY一STRING可能为空或不空,这有赖于服务器。如果有信息,则其如GET的情况一样被格式化和传递。
来自POST查询的数据使用STDIN从服务器传到脚本。由于STDIN是一个源,脚本需要知道有多少有效数据。于是服务器还提供了另一个变量,CONTENT_LENGTH,以指出到来数据的字节数。而POST的数据格式为:
variable1=value1&variable2=value2&etc
你的程序必须检查REQUEST_METHOD环境变量以知道是否要读取STDIN。CONTENT_LENGTH变量一般只在REOUEST_METHOD为POST时有用。
当脚本被服务器引发时,服务器常常以两种途径之一向脚本传递信息:GET或POST。这两种方法被称为请求方法。所使用的请求方法是通过环境变量传给脚本,该环境变量叫作REQUEST_METHOD(还定义了另外两种请求方法一HEAD和PUT)。
二、灌水机源代码:
利用POST制作灌水机必须要先了解论坛的CGI应该获得一个什么样的string,这要依靠sniffer或者直接使用cgi编写拦截string流的小程序,不过因为POST的格式非常简单,所以经过简单的推测就可以获得它的具体形式,例如对某个论坛我使用的灌水机源代码如下:
/***********************************......
单纯形法(最终版本)(2005-09-24 16:05:00)
摘要:#include<iomanip.h>
#include <fstream.h>
ifstream fin("a.txt");
ofstream fout("b.txt");
#define Min -99999
#define Max 99999
int main()
{
float a[100][100];//方程的系数
float check[100];//检验数
float Csum;//Cj-Zj的和
float z[100];//目标函数
int m,n;//分别为变量数和方程个数
int XB[100];//基变量
int mark[100];//标记某个基是否是基变量
int in,out;//换入和换出基的位置
float inN,outN;//换入和换出基的值
float result;//最优值
int i,j;
int sum;
int posx,posy;
float temp,temp2;
fin>>m>>n;
for(i=0;i<m;i++) fin>>z[i];
for(i=0;i<n;i++)
for(j=0;j<=m;j++)
fin>>a[i][j];
//下面是找基的过程
for(i=0;i<100;i++)
XB[i]=mark[i]=0;
//先来找容易看出来的基
for(i=0;i<m;i++)
{
posy=0;
sum=0;
for(j=0;j<n;j++)
if(a[j][i]!=0)
{
if(sum==0) posy=j;
sum++;
}
if(sum==1 && mark[i]==0) //第i个变量只有第j个方程有系数且不是基
{
temp=a[posy][i];
for(j=0;j<=m;j++)//把它化为基
a[posy][j]/=temp;
XB[posy]=i;
mark[i]=1;
}<......
2阶段单纯形法(2005-09-21 15:26:00)
摘要:#include<iomanip.h>
#include <fstream.h>
#define Min -99999
#define Max 99999
int main()
{
float a[100][100],b[100],z[100],c[100];
int XB[100];
int m,n;
int in,out;
float inN,outN;
float sum;
int pos;
float temp,temp2,temp3;
int i,j;
float result;
ifstream fin("in.txt");
ofstream fout("out.txt");
fin>>m>>n;
for(i=0;i<m;i++)
fin>>z[i];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
fin>>a[i][j];
fin>>b[i];
}
for(i=0;i<n;i++)
XB[i]=i+m;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][m+j]=0;
for(i=0;i<n;i++)
a[i][m+i]=1;
//第一阶段
for(i=0;i<m;i++)
c[i]=0;
for(i=0;i<n;i++)
c[i+m......
一个垃圾问的问题.(2005-09-18 16:16:00)
摘要:#include <iostream.h>
#include <fstream.h>
#include <string.h>
int main()
{
char a[100][30],b[100][30];
int i,j;
int T1,T2;
int flag1[10],flag2[10];
ifstream f1("a.txt");
ifstream f2("b.txt");
for(i=0;i<10;i++)
flag1[i]=flag2[i]=0;
for(i=0;i<100;i++)
{
f1>>a[i];
if(strcmp(a[i],"0")==0)
{
T1=i;
break;
}
}
for(i=0;i<100;i++)
{
if(f2>>b[i]) ;
if(strcmp(b[i],"0")==0)
{
T2=i;
break;
}
}
f1.close();
f2.close();
cout<<"a.txt";
for(i=5;i<=20;i++)
cout<<" ";
cout<<" ";
cout<<"b.txt";
for(i=5;i<=20;i++)
cout<<" ";
cout<<"type\n";
for(i=0;i<=22;i++)
cout<<"-";
cout<<"+";
for(i=0;i<=21;i++)
cout<<"-";
cout<<"+----";
cout<<endl;
for(i=0......
字符统计(2005-09-10 10:43:00)
摘要:#include <stdio.h>
int count(char *s,int *t)
{
char *p=s;
while(*p!='\0')
{
if(*p>='a' && *p<='z' || *p>='A' && *p<='Z')
t[0]++;
else if(*p>='0' && *p<='9')
t[1]++;
else if(*p==' ')
t[2]++;
else
t[3]++;
p++;
}
}
int main()
{
int i,t[4];
char s[100];
while(gets(s))
......
求二进制转换成十进制的代码(2005-09-10 10:25:00)
摘要:#include <iostream.h>
long fun(char *s)
{
long a=0;
int pos=0;
while(s[pos]!='\0')
{
a=a*2+s[pos]-'0';
pos++;
}
return a;
}
int main()
{
char s[20];
while(cin>>s)
cout<<fun(s)<<endl;
} ......
时间(2005-09-10 10:16:00)
摘要:#include <iostream.h>
#include <string.h>
int main()
{
char s[20];
while(cin>>s)
{
int a=0,b=0,c=0;
int pos=0;
while(s[pos]!=':')
{
a=a*10+s[pos]-'0';
pos++;
}
pos++;
while(s[pos]!=':')
{
b=b*10+s[pos]-'0';
&......
stu(2005-09-10 09:17:00)
摘要:#include <stdio.h>
///#include <malloc.h>
struct student
{
char name[20];
int score;
};
struct student *a,*b;
//stu *a,*b;
int n=2;
int total=0;
a=(struct student *)malloc(n*sizeof(stu));
void insert()
{
int i;
if(total>=n)
{
b=(struct student *)malloc(n*sizeof(stu));
free(a);
n=n*2;
a=(struct student *)malloc(n*sizeof(stu));
for(i=0;i<n/2;i++)
a[i]=b[i];
free(b);
}
&nb......
分解因式.(2005-09-08 19:11:00)
摘要:#include <iostream.h>
int fun(long a)
{
long i,b=a;
cout<<a<<"=1";
for(i=2;i<=b;i++)
while(b%i==0)
{
cout<<"*"<<i;
b=b/i;
}
cout<<endl;
return 0;
}
int main(int argc, char* argv[])
{
fun(12);
fun(82);
return 0;
}......