4.移位加密与解密
#include"stdio.h"
main()
{
int choice=0,k;
FILE *fp1,*fp2;
char c,filename1[30],filename2[30];
printf("Please input two deferent filename:");
scanf("%s%s",filename1,filename2);
printf("Please input the password :\n");
scanf("%d",&k);
if((fp1=fopen(filename1,"r"))==NULL)
printf("\nERROR!CAN NOT OPEN THE FILE\n");
else{
fp2=fopen(filename2,"w");
printf("\nChoose:(1-jiami 2-jiemi)");
scanf("%d", &choice);
switch(choice){
case 1:
do{
c=getc(fp1);
if(((c>='a')&&(c<='z'-k))||((c>='A')&&(c<='Z'-k)))
putc(c+k,fp2);
else if(((c>'z'-k)&&(c<='z'))||((c>'Z'-k)&&(c<='Z')))
putc(c-(26-k),fp2);
else
putc(c,fp2);
}while(c!=EOF);
break;
case 2:
do{
c=getc(fp1);
if(((c>='a'+k)&&(c<='z'))||((c>='A'+k)&&(c<='Z')))
putc(c-k,fp2);
else if(((c>='a')&&(c<'a'+k))||((c>='A')&&(c<'A'+k)))
putc(c+(26-k),fp2);
else
putc(c,fp2);
}while(c!=EOF);
break;
default:
printf("\nYou have choose a wrong number!Please choose again!");
}
}
fclose(fp1);
fclose(fp2);
}
5.辅助运算
(1)整数N模m的乘法逆t
main()
{
unsigned n,m,t=1;
int c;
printf("Please enter the number:\n");
scanf("%d,%d",&n,&m);
while(t<65535)
{
c=n*t%m;
if(c==1||c==0)
break;
t++;
}
if(t==65535||c==0)
printf("Nicheng number is not exited!\n");
if(c==1)
printf("T is : %d\n",t);
getch();
}
(2)统计字母个数
#include "string.h"
main()
{
int i,j,t;
char a[80],b[26];
int c[26];
char e;
printf("Please enter the letters:\n");
gets(a);
for(i=0;i<26;i++)
b[i]='A'+i;
for(i=0;i<26;i++)
c[i]=0;
for(j=0;j<80;j++)
{for(i=0;i<26;i++)
{
if(a[j]==b[i]||a[j]==b[i]+32)
c[i]++;
}
if(a[j]=='\0')
break;
}
for(j=0;j<=25;j++)
{for(i=0;i<=25;i++)
{if(c[i]>c[i+1])
{
t=c[i];c[i]=c[i+1];c[i+1]=t;
e=b[i];b[i]=b[i+1];b[i+1]=e;
}
}
}
for(i=25;i>=0;i--)
{if(c[i]!=0)
printf("The %c letter number is %d \n",b[i],c[i]);
}
getch();
}
(3)OTP加密
#include "stdio.h"
main()
{char a[80],b[80],c[80];
int i;
printf("Please enter the x :\n");
gets(a);
printf("Please enter the k :\n");
gets(b);
for(i=0;i<80;i++)
c[i]=(a[i]+b[i])%26;
printf("The result is :\n");
for(i=0;i<80&&c[i]!='\0';i++)
printf("%c",c[i]);
getch();
}
优 心得体会
通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我只坐了一个下午,什么也没干!回去以后,我想,这样不行,这样下去还得了!我就重新学了一遍我们上个学期的教材,发觉自已有许多都遗忘了!特别是有文件的操作,几乎是一遍空白!温习过后,开始做题!那个欢迎动画是在”C语言之家”找到的,自已改了一下,但并没做多大的改动!之后做出来的第一个程序是”统计字母个数”,因为上个学做过类似的!接着是”乘法逆”,这个我觉得比较简单!再接着是”OTP”加密!而那个学生成绩管理系统是参考了上机手册后做出来的!最后,花了最多时间的是”异或加密与解密”和”移位加解密”,几乎花了我百分之九十的时间,而且还是在一些在其他大学读计科专业的同学的帮助下和在上网查看了大量的资料之后才做出来!最后,想说两句,这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!
七 参考文献
<<C/C++程序设计教程>>
<<C程序设计>>
<<C程序设计题解与上机指导>>
C语言之家(http://www.cstudyhome.com)
C语言教室(http://www.vcok.com)Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=773985