最根本原因是因為我不知道退出函數,所以只能利用下面自己發現的規律來達到輸入任意鍵即可退出:
【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;/*跳出條件語句避免“失敗經過”*/
}
}
==========================================================================