1 / 41
文档名称:

c编程实例.doc

格式:doc   大小:104KB   页数:41页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c编程实例.doc

上传人:xzh051230 2019/1/14 文件大小:104 KB

下载得到文件列表

c编程实例.doc

相关文档

文档介绍

文档介绍:文件进行加密,当解密时,只需再运行一遍加密程序即可. 下面是一个实例程序,能对任意一个文件进行加密,密码要求用户输入,限8位以内(当然你可以再更改).程序有很好的容错设计,这是我们应该学****的./*!*/#include<>#include<>#include<>#include<>voiddofile(char*in_fname,char*pwd,char*out_fname);/*对文件进行加密的具体函数*/voidmain(intargc,char*argv[])/*定义main()函数的命令行参数*/{charin_fname[30];/*用户输入的要加密的文件名*/charout_fname[30];charpwd[8];/*用来保存密码*/if(argc!=4){/*容错处理*/printf("\nIn-fname:\n");gets(in_fname);/*得到要加密的文件名*/printf("Password:\n");gets(pwd);/*得到密码*/printf("Out-file:\n");gets(out_fname);/*得到加密后你要的文件名*/dofile(in_fname,pwd,out_fname);}else{/*如果命令行参数正确,便直接运行程序*/scpy(in_fname,argv[1]);scpy(pwd,argv[2]);scpy(out_fname,argv[3]);dofile(in_fname,pwd,out_fname);}}/*加密子函数开始*/voiddofile(char*in_fname,char*pwd,char*out_file){FILE*fp1,*fp2;registercharch;intj=0;intj0=0;fp1=fopen(in_fname,"rb");if(fp1==NULL){printf("cannotopenin-file.\n");exit(1);/*如果不能打开要加密的文件,便退出程序*/}fp2=fopen(out_file,"wb");if(fp2==NULL){printf("cannotopenorcreateout-file.\n");exit(1);/*如果不能建立加密后的文件,便退出*/}while(pwd[j0]);ch=fgetc(fp1);/*加密算法开始*/while(!feof(fp1)){fputc(ch^pwd[j>=j0?j=0:j],fp2);/*异或后写入fp2文件*/ch=fgetc(fp1);}fclose(fp1);/*关闭源文件*/fclose(fp2);/*关闭目标文件*/}冒泡排序的算法分析与改进交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。冒泡排序1、排序方法将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。(1)初始 R[1..n]为无序区。(2)第一趟扫描从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。(3)第二趟扫描扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上……最后,经过n-1趟扫描可得到有序区R[1..n]注意: 第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R[i]上,结果是R[1..i]变为新的有序区。2、冒泡排序过程示例对关键字序列为4938659776132749的文件进行冒泡排序的过程【参见动画演示】3、排序算法(1)分析因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。若在某一趟排序中未发现气泡位置的交换,则说明待排序的无