#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 100
void move();
void encrypt();
void decode();
void change();
void disorganize();
void group();
void transition();
void different();
int main(){
int choice;
printf("请选择加密或者解密(加密1,解密2):");
scanf("%d", &choice);
if (choice == 1){
encrypt();
}
if (choice == 2){
decode();
}
else
printf("输入错误,请重新输入");
return 0;
}
void encrypt(){
int i, t, move;
char passwd[N];
printf("请输入要加密的信息:\n");
fflush(stdin);
gets(passwd);
printf("请输入密钥(1~25):\n");
scanf("%d%*c", &move);
t = strlen(passwd);//求字符串的长度
for (i = 0; i <= t; i++)
{
if (passwd[i] >= 'a' && passwd[i] <= 'z')
{
passwd[i] = ((passwd[i] - 'a') + move) % 26 + 'a';
}
else if (passwd[i] >= 'A' && passwd[i] <= 'Z')
{
passwd[i] = ((passwd[i] - 'A') + move) % 26 + 'A';
}
}
printf("%s\n", passwd);
}
void decode(){
int j, t, move;
char passwd2[N];
printf("请输入要解密的信息:\n");
fflush(stdin);
gets(passwd2);
printf("请输入密钥(1~25):\n");
scanf("%d%*c", &move);
t = strlen(passwd2);//求字符串的长度
for (j = 0; j <= t; j++)
{
if (passwd2[j] >= 'a' && passwd2[j] <= 'z')
{
passwd2[j] = (('z' - ('z' - passwd2[j]) + move) % 26);
}
else if (passwd2[j] >= 'A' && passwd2[j] <= 'Z')
{
passwd2[j] = (('Z' - ('Z' - passwd2[j]) + move) % 26);
}
}
printf("%s\n", passwd2);
}
你调用两个函数的时候没有传递参数啊。编译应该也通不过啊。函数申明是无参的,函数实现是带参数的。编译没报错?
把函数参数去掉,把当前函数参数定义为全局变量,在第12行插入全局变量char passwd2[N];