最根本原因是因为我不知道退出函数,所以只能利用下面自己发现的规律来达到输入任意键即可退出:
【2】,if(条件表达式).......else 若没写最后一个else,又不符合条件表达式,则默认退出(下面必须无代码若有则直接运行下面的代码)。
成功利用此规律的为我第一、二次发表程序…当第三次改进程序时破坏了这个规律所以会导致出现这个BUG…⊙﹏⊙b汗,以后这个规律还是少用为妙~~~
修正版界面:
修正版的源代码:
=========================================================================
#include<stdio.h>/*加载包含基本输入输出函数头文件*/
#include<stdlib.h>/*加载标准函数库头文件*/
int main()/*声明主函数,每个C程序必须具备的*/
{
printf("\n 灵感\n\n ↖(^ω^)↗本次灵感来自常量特性,但改进时,\n 却发现直接利用函数调用就能改进选择一次功\n 能都必须重新输入序列号的缺陷,哈!函数可\n 真好玩↖(^ω^)↗,真想跳过数组知识直接学\n 函数知识,不过听说数组也蛮好玩的,可是...\n 快开学了..........\n\n");
system("pause");/*程序挂起*/
int zhu();/*调用自定义zhu函数*/
zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
/*******************************注册验证及数字加密功能代码**********************************/
int jiamiweizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiweizhuce函数(未注册限制使用)同时声明变量*/
{
/*以下为未注册限制代码↓↓*/
while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/
{
printf("\n请输入一组需加密的数字【未注册】\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
a=a+100000;/*进行加密算法↓↓*/
a=a+100009;
a=a+100052;
a=a+100878;
a=a+108546;
a=a+113545;
a=a+314123;/*进行加密算法↑↑*/
i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/
printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/
printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n ");/*提示*/
scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
if(d==3)/*若变量d等于3则强制跳出循环*/
break;/*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
int zhu();/*调用自定义的zhu函数*/
zhu();/*我也不清楚为什么还要再写一次函数名,我是在我的兄弟"武"的C++代码得到的启发,如果没这句代码将无法调用此函数!或许这就是强制调用函数吧!*/
}
system("pause");/*程序挂起*/
int tishi();/*调用自定义的tishi函数*/
tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
int jiamiyizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiyizhuce函数(已注册无限制使用)*/
{
/*以下为已注册无限制代码↓↓*/
for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/
{
printf("\n请输入一组需加密的数字【已注册,可无限使用】\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
a=a+100000;/*进行加密算法↓↓*/
a=a+100009;
a=a+100052;
a=a+100878;
a=a+108546;
a=a+113545;
a=a+314123;/*进行加密算法↑↑*/
printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】\n\n",a);/*算法完成,输出密文*/
printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n ");/*提示*/
scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
if(d==3)/*若变量d等于3则强制跳出循环*/
break; /*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
system("pause");/*程序挂起*/
}
int jiemiweizhuce(int i=3,int a=0,int d=0)/*声明解密未注册(限制使用)函数*/
{
/*以下为未注册限制代码↓↓*/
while(i!=0)/*循环语句,设定条件为3次,达到三次后跳出循环语句即i等于3*/
{
printf("\n请输入一组需解密的数字【未注册】\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
a=a-100000;/*逆行执行加密算法↓↓*/
a=a-100009;
a=a-100052;
a=a-100878;
a=a-108546;
a=a-113545;
a=a-314123;/*逆行执行加密算法↑↑*/
i--;/*运行算法一次则i加1,达到三次后满足循环条件*/
printf("\n\a ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出真实密码*/
printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n ");/*提示*/
scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
if(d==3)/*若变量d等于3则强制跳出循环*/
break;/*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
int zhu();/*调用自定义的zhu函数*/
zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
system("pause");/*程序挂起*/
int tishi();/*调用自定义的tishi函数*/
tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
int jiemiyizhuce(int i=3,int a=0,int d=0)/*声明解密已注册(解除限制)函数*/
{
/*以下为已注册无限制代码↓↓*/
for(;;)/*循环语句,不设定条件*/
{
printf("\n请输入一组需解密的数字【已注册,可无限使用】\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
a=a-100000;/*逆行执行加密算法↓↓*/
a=a-100009;
a=a-100052;
a=a-100878;
a=a-108546;
a=a-113545;
a=a-314123;/*逆行执行加密算法↑↑*/
printf("\n\n\a ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】\n\n",a);/*算法完成输出真实密码*/
printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n ");/*提示*/
scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
if(d==3)/*若变量d等于3则强制跳出循环*/
break; /*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
system("pause");/*程序挂起*/
}
/*******************************注册验证及数字加密功能代码**********************************/
/****************************************主要代码*******************************************/
int zhu()/*自定义zhu函数*/
{
int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
printf("\n********************************************************************");
printf("\n 此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
printf("\n\n 愿结交对C语言深感兴趣并研究过C语言的朋友\n 若有任何建议或愿共同探讨请联系QQ:0000000000\n 本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
printf("\n********************************************************************\n");
system("pause");
printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n 改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n 9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n 程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n 指教。");
printf("\n********************************************************************");
printf("\n\n O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
{
printf("\n\n O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
}
switch(a)/*判断语句,在c++称为开关语句*/
{
case 1:/*若a等于1则运行下面代码*/
printf("\n (*^__^*) 欢迎使用本加密程序【注:试用版只能使用三次】\n");/*显示说明*/
printf("请输入序列号:\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
jiamiweizhuce();/*调用jiamiweizhuce函数*/
else/*若等于0000000000则运行下面指令*/
jiamiyizhuce();/*调用jiamiyizhuce函数*/
break;/*跳出判断语句避免“失败经过”*/
case 2:/*如果a等于2则运行下面代码*/
printf("\n (*^__^*) 欢迎使用本解密程序【注:试用版只能使用三次】\n");/*显示说明*/
printf("请输入序列号:\n\n ");/*显示说明*/
scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
jiemiweizhuce();/*调用jiemiweizhuce代码*/
else/*若等于0000000000则运行下面指令*/
jiemiyizhuce();/*调用jiemiyizhuce函数*/
break;/*跳出判断语句避免“失败经过”*/
case 0:/*若a等于0则运行下面代码*/
exit(0);/*退出程序*/
break;/*跳出判断语句避免“失败经过”*/
}
}
int tishi()/*自定义tishi函数*/
{
int q;/*声明变量*/
printf("\n\a\a\a ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/
printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/
printf("\n返回主菜单请输入数字【3】,退出请输入任意数字\n\n ");/*提示*/
scanf("%d",&q);/*读取用户所输入数值并存入变量q*/
if(q==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
int zhu();/*调用自定义的zhu函数*/
zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
else/*若不等于则运行下面代码即退出,达到按任意数字键退出的目的*/
exit(0);/*退出程序*/
}
int yizhuce()/*自定义yizhuce函数*//*此函数已去除验证序列号的功能*/
{
int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
printf("\n********************************************************************");
printf("\n 此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
printf("\n\n 愿结交对C语言深感兴趣并研究过C语言的朋友\n 若有任何建议或愿共同探讨请联系QQ:0000000000\n 本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
printf("\n********************************************************************\n");
system("pause");/*程序挂起代码*/
printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n 改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n 9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n 程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n 指教。");
printf("\n********************************************************************");
printf("\n\n O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
{
printf("\n\n O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
}
switch(a)/*判断语句,在c++称为开关语句*/
{
case 1:/*若a等于1则运行下面代码*/
jiamiyizhuce();/*调用jiamiyizhuce函数*/
break;/*跳出条件语句避免“失败经过”*/
case 2:/*若a等于2则运行下面代码*/
jiemiyizhuce();/*调用jiemiyizhuce函数*/
break;/*跳出条件语句避免“失败经过”*/
case 0:/*若a等于0则运行下面代码*/
exit(0);/*退出程序*/
break;/*跳出条件语句避免“失败经过”*/
}
}
==========================================================================