数据库操作的步骤。
1、建立数据库连接 2、打开数据库连接 3、建立数据库命令 4、运行数据库命令 5、保存数据库命令 5、关闭数据库连接
TCP/IP协议的四层。
tcp/ip这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口
网络接口层
模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。
互联层
互联协议将数据包封装成internet数据报,并运行必要的路由算法。
这里有四个互联协议:
网际协议ip:负责在主机和网络之间寻址和路由数据包。
地址解析协议arp:获得同一物理网络中的硬件主机地址。
网际控制消息协议icmp:发送消息,并报告有关数据包的传送错误。
互联组管理协议igmp:被ip主机拿来向本地多路广播路由器报告主机组成员。
传输层
传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。
两个传输协议:
传输控制协议tcp:为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。
用户数据报协议udp:提供了无连接通信,且不对传送包进行可靠的保证。适合于一次传输小量数据,可靠性则由应用层来负责。
应用层
应用程序通过这一层访问网络。
网络接口技术
ip使用网络设备接口规范ndis向网络接口层提交帧。ip支持广域网和本地网接口技术。
3什么是MVC,并简介其组成部分的作用
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使
程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结
构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功
能。专业人员可以通过自身的专长分组:
(控制器Controller)- 负责转发请求,对请求进行处理。
(视图View) – 界面设计人员进行图形界面设计。
(模型Model) – 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据
有一个密码由三位组成,每一位既可以是数字也可以是字母,写一个程序将所有可能的密码组合输出。
#include
#include
char buff[20];
char element[100]={“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST0123456789″};
//char element[100]={“abcde+-”};
FILE* fp;
int N;
void Enumerate(intn,intlen)
{
if(n==len)
{
buff[len]=’\0′;
fprintf(fp,”%s\n”,buff);
return ;
}
for(int i=0;i
{
buff[n]=element[i];
Enumerate(n+1,len);
}
}
void Generate(intlow,int high)
{
for(int i=low;i<=high;i++)
{
Enumerate(0,i);
printf("%s\n",buff);
}
}
int main()
{
fp=fopen("test.dic","w");
if(fp==NULL)
{
printf("Can not open the file!\n");
return 0;
}
N=strlen(element);
Generate(3,3);
fclose(fp);
return 0;
}
写一个算法将字符串反转。
1. void test()
2. {
3. int c = getchar();
4. if (c != '\n')
5. test();
6. putchar(c);
7. }
8.
9. int main(intargc, char *argv[])
10. {
11. test();
12. return 0;
假设对字符串的操作有三种:替换、插入、删除。问从字符串A到B所需要的最少操作数写出递归公式,思想和用代码实现。
分析解答
设所给的两个字符串为A[1:m]和B[1:n]。定义D[i][j]=d(A[1:i],B[1,j])。单字符a,b间的距离定义为:
d(a,b)=0 (a=b)
d(a,b)=1(a!=b)
考察从字符串A[1:i]到字符串B[1:j]的变换。可分成以下几种情况:
(1)字符A[i]改为字符B[j];需要d(A[i],B[j])次操作。
(2)删除字符A[i];需要1次操作。
(3)插入字符B[j];需要1次操作。
因此,D[i][j]可递归地计算如下。
D[i][j]=min{D[i-1][j-1]+d(A[i],B[j]),D[i-1][j]+1,D[i][j-1]+1}。
算法描述
intdist(A[0…m-1],B[0…n-1])
{
int D[0…m,0…n]
inti,j,cost
对于i等于0至m
D[i, 0]=i
对于j等于0至n
D[0,j]=j
对于i等于1至m
对于j等于1至n
若 A[i-1]=B[j-1]则cost=0 否则 cost=1
D[i][j]=min(D[i-1,j]+1,//删除
D[i,j-1]+1,//插入
D[i-1,j-1]+cost//替换
)
返回d[m,n]
}
代码实现
定义一个二维数组D[][]存储中间结果,如下图所示,为已经初始化后的情况。然后从D[1,1]开始从左到右,从上到下依次按填表,表的最后一个元素D[m,n]就是要求的最终结果。
0 1 2 3 4 5 6
0 0 1 2 3 4 5 6
1 1
2 2
3 3
4 4
5 5
6 6
[cpp] view plaincopyprint
#include
#include
using namespace std;
int D[100][100];
int dis[100];
int min(inta,intb,int c)
{
return c<(a>b b:a) c:(a>b b:a);
}
intdist(char * A,char * B)
{
int m=strlen(A);
int n=strlen(B);
inti,j;
for(i=0;i<=m;++i)
{
D[i][0]=i;
}
for(j=0;j<=n;++j)
{
D[0][j]=j;
}
int cost;
for(i=1;i<=m;++i)
{
for(j=1;j<=n;++j)
{
if(A[i-1]==B[j-1])
cost=0;
else
cost=1;
D[i][j]=min(D[i-1][j-1]+cost,D[i-1][j]+1,D[i][j-1]+1);
}
}
return D[m][n];
}
int dist2(char * A,char * B)
{
int m=strlen(A);
int n=strlen(B);
inti,j;
for(i=0;i<=n;++i)
dis[i]=i;
int cost;
for(i=1;i<=m;++i)
{
int y=i-1;
for(j=1;j<=n;++j)
{
int x=y;
y=dis[j];
int z=j>1 dis[j-1]:i;
cost=A[i-1]==B[j-1] 0:1;
dis[j]=min(x+cost,y+1,z+1);
}
}
return dis[n];
}
int main(intargc, char* argv[])
{
char * ch1=”bcdefghijklmnopq”;
char * ch2=”abcdefghijklmnopadfsafwe”;
cout<
cout<
return 0;
}
设计一个银行密码登陆验证系统。