当前位置:首页 » 编程语言 » 北邮c语言大作业

北邮c语言大作业

发布时间: 2023-03-10 05:32:17

1. c语言程序设计大作业🙏🙏🙏

大作业很重要,你这个最好请我来写。

2. c语言大作业 最少100行 写什么啊

这是以前我自己写的一个加密解密的程序,一共有175行,不过因为其中写了两种加密方法和两种对应的解密方法,而且用函数将他们区分开来,还用菜单做了选项,所以你只要直接删除其中一种方法的加解密函数就可以了,这个字符串加解密是对字符串比较全的操作,对你学习c会有帮助,而且也不难看懂,你可以看下,不懂可以通过网络hi问我(encrypt函数是加密函数decrypt是解密函数,数字1和2表示第一种加密方式,第二种加密方式)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
FILE *file=NULL;
void main()
{
void set(char*,int*,int*);
void encrypt1(char*,const int*);
void decrypt1(char*,const int*);
void encrypt2(char*,const int*);
void decrypt2(char*,const int*);
char content[100000]="";
int key1[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
int key2[2]={0};
char press='\0';
do
{
printf("*********************************\n");
printf("1.设置加密方法\n");
printf("2.加密方法1\n");
printf("3.加密方法2\n");
printf("4.解密方法1\n");
printf("5.解密方法2\n");
printf("6.退出\n");
printf("*********************************\n");
printf("选择操作步骤(1-6):\n");
switch(press=getch())
{
case '1':set(content,key1,key2);break;
case '2':encrypt1(content,key1);break;
case '3':encrypt2(content,key2);break;
case '4':decrypt1(content,key1);break;
case '5':decrypt2(content,key2);break;
default:break;
}
}while(press!='6');
if(file!=NULL)
{
rewind(file);
fputs(content,file);
printf("文件或字符串的内容为:\n");
puts(content);
fclose(file);
}
}
void set(char content[100000],int key1[10],int key2[2])
{
long int key;
char ch;
int i;
char str[100]="";
if(file!=NULL)
{
fclose(file);
file=NULL;
}
printf("输入字符串或者文件完整路径:");
gets(str);
if(file=fopen(str,"r+"))
{
printf("输入的是文件完整路径,内容为:\n");
while(fgetc(file)!=EOF)
{
fseek(file,-1,1);
fgets(content,100000,file);
printf("%s",content);
}
}
else
{
file=fopen("content.txt","w+");
strcpy(content,str);
printf("输入的是字符串,内容为:\n");
puts(content);
}
printf("\n设置密码:");
gets(str);
for(i=0;(i<strlen(str))&&(i<10);i++)
*(key1+i)=*(str+i)-'0';
key=atoi(str);
key2[0]=(key%11>=3)?(key%11):3;
for(key2[1]=1,i=0;i<10;i++)
if((*(key1+i)>key2[1])&&(*(key1+i)<key2[0]))
key2[1]=*(key1+i);
}
void encrypt1(char content[100000],const int key1[10])
{
int j,k;
for(j=0,k=0;j<strlen(content);j++)
{
*(content+j)+=*(key1+k);
k++;
if(k==9||*(key1+k)==-1)
k=0;
if(*(content+j)>=122)
*(content+j)%=122;
}
}
void decrypt1(char content[100000],const int key1[10])
{
int j,k;
for(j=0,k=0;j<strlen(content);j++)
{
*(content+j)-=*(key1+k);
k++;
if(k==9||*(key1+k)==-1)
k=0;
if(*(content+j)>=122)
*(content+j)%=122;
}
}
void encrypt2(char content[100000],const int key2[2])
{
char precontent[100000],str[11]="",ch;
int i,j,p;
p=key2[0];
strcpy(precontent,content);
strcpy(content,"");
for(i=0;i<strlen(precontent);)
{
if(strlen(precontent)-i<key2[0])
p=strlen(precontent)-i;
for(j=p-1;j>=0;j--)
*(str+j)=*(precontent+i++);
if(p==key2[0])
{
ch=*(str);
*(str)=*(str+key2[1]);
*(str+key2[1])=ch;
}
else
{
ch=*(str);
*(str)=*(str+p-1);
*(str+p-1)=ch;
}
strcat(content,str);
for(j=0;j<p;j++)
*(str+j)='\0';
if(p!=key2[0])
break;
}
}
void decrypt2(char content[100000],const int key2[2])
{
char precontent[100000],str[11]="",ch;
int i,j,p;
p=key2[0];
strcpy(precontent,content);
strcpy(content,"");
for(i=0;i<strlen(precontent);)
{
if(strlen(precontent)-i<key2[0])
p=strlen(precontent)-i;
for(j=p-1;j>=0;j--)
*(str+j)=*(precontent+i++);
if(p==key2[0])
{
ch=*(str+p-1);
*(str+p-1)=*(str+p-1-key2[1]);
*(str+p-1-key2[1])=ch;
}
else
{
ch=*(str);
*(str)=*(str+p-1);
*(str+p-1)=ch;
}
strcat(content,str);
for(j=0;j<11;j++)
*(str+j)='\0';
if(p!=key2[0])
break;
}
}

热点内容
动态规划01背包算法 发布:2024-11-05 22:17:40 浏览:849
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:181
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:739
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:248
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:344
php时间搜索 发布:2024-11-05 20:58:36 浏览:479
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:528
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:408
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:665
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:392