北郵c語言大作業
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;
}
}