最根本原因是因?yàn)槲也恢劳顺龊瘮?shù),所以只能利用下面自己發(fā)現(xiàn)的規(guī)律來(lái)達(dá)到輸入任意鍵即可退出:
【2】,if(條件表達(dá)式).......else 若沒(méi)寫最后一個(gè)else,又不符合條件表達(dá)式,則默認(rèn)退出(下面必須無(wú)代碼若有則直接運(yùn)行下面的代碼)。
成功利用此規(guī)律的為我第一、二次發(fā)表程序…當(dāng)?shù)谌胃倪M(jìn)程序時(shí)破壞了這個(gè)規(guī)律所以會(huì)導(dǎo)致出現(xiàn)這個(gè)BUG…⊙﹏⊙b汗,以后這個(gè)規(guī)律還是少用為妙~~~
修正版界面:
修正版的源代碼:
=========================================================================
#include<stdio.h>/*加載包含基本輸入輸出函數(shù)頭文件*/
#include<stdlib.h>/*加載標(biāo)準(zhǔn)函數(shù)庫(kù)頭文件*/
int main()/*聲明主函數(shù),每個(gè)C程序必須具備的*/
{
printf("\n 靈感\(zhòng)n\n ↖(^ω^)↗本次靈感來(lái)自常量特性,但改進(jìn)時(shí),\n 卻發(fā)現(xiàn)直接利用函數(shù)調(diào)用就能改進(jìn)選擇一次功\n 能都必須重新輸入序列號(hào)的缺陷,哈!函數(shù)可\n 真好玩↖(^ω^)↗,真想跳過(guò)數(shù)組知識(shí)直接學(xué)\n 函數(shù)知識(shí),不過(guò)聽(tīng)說(shuō)數(shù)組也蠻好玩的,可是...\n 快開(kāi)學(xué)了..........\n\n");
system("pause");/*程序掛起*/
int zhu();/*調(diào)用自定義zhu函數(shù)*/
zhu();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
/*******************************注冊(cè)驗(yàn)證及數(shù)字加密功能代碼**********************************/
int jiamiweizhuce(int i=3,int a=0,int d=0)/*聲明自定義jiamiweizhuce函數(shù)(未注冊(cè)限制使用)同時(shí)聲明變量*/
{
/*以下為未注冊(cè)限制代碼↓↓*/
while(i!=0)/*循環(huán)語(yǔ)句,設(shè)定條件為3次,由聲明變量時(shí)確定,達(dá)到三次后跳出循環(huán)停止運(yùn)行算法*/
{
printf("\n請(qǐng)輸入一組需加密的數(shù)字【未注冊(cè)】\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的數(shù)值并賦值給變量a*/
a=a+100000;/*進(jìn)行加密算法↓↓*/
a=a+100009;
a=a+100052;
a=a+100878;
a=a+108546;
a=a+113545;
a=a+314123;/*進(jìn)行加密算法↑↑*/
i--;/*運(yùn)行算法一次則i減1,達(dá)到三次后滿足循環(huán)條件即運(yùn)行3次算法,則i=3-3=0*/
printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文為:【%d】(還有【%d】次使用權(quán))\n\n",a,i);/*算法完成輸出密文并提醒使用次數(shù)*/
printf("\n返回主菜單請(qǐng)輸入數(shù)字【3】,繼續(xù)加密請(qǐng)輸入任意數(shù)字\n\n ");/*提示*/
scanf("%d",&d);/*讀取用戶所輸入的數(shù)值并存入變量d*/
if(d==3)/*若變量d等于3則強(qiáng)制跳出循環(huán)*/
break;/*強(qiáng)制跳出循環(huán)*/
}
if(d==3)/*若變量d等于3則運(yùn)行以下代碼,否則省略本段代碼*/
{
int zhu();/*調(diào)用自定義的zhu函數(shù)*/
zhu();/*我也不清楚為什么還要再寫一次函數(shù)名,我是在我的兄弟"武"的C++代碼得到的啟發(fā),如果沒(méi)這句代碼將無(wú)法調(diào)用此函數(shù)!或許這就是強(qiáng)制調(diào)用函數(shù)吧!*/
}
system("pause");/*程序掛起*/
int tishi();/*調(diào)用自定義的tishi函數(shù)*/
tishi();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
int jiamiyizhuce(int i=3,int a=0,int d=0)/*聲明自定義jiamiyizhuce函數(shù)(已注冊(cè)無(wú)限制使用)*/
{
/*以下為已注冊(cè)無(wú)限制代碼↓↓*/
for(;;)/*循環(huán)語(yǔ)句,不設(shè)定條件,可無(wú)限次運(yùn)行算法指令*/
{
printf("\n請(qǐng)輸入一組需加密的數(shù)字【已注冊(cè),可無(wú)限使用】\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的數(shù)值并賦值給變量a*/
a=a+100000;/*進(jìn)行加密算法↓↓*/
a=a+100009;
a=a+100052;
a=a+100878;
a=a+108546;
a=a+113545;
a=a+314123;/*進(jìn)行加密算法↑↑*/
printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文為:【%d】\n\n",a);/*算法完成,輸出密文*/
printf("\n返回主菜單請(qǐng)輸入數(shù)字【3】,繼續(xù)加密請(qǐng)輸入任意數(shù)字\n\n ");/*提示*/
scanf("%d",&d);/*讀取用戶所輸入的數(shù)值并存入變量d*/
if(d==3)/*若變量d等于3則強(qiáng)制跳出循環(huán)*/
break; /*強(qiáng)制跳出循環(huán)*/
}
if(d==3)/*若變量d等于3則運(yùn)行以下代碼,否則省略本段代碼*/
{
int yizhuce();/*調(diào)用自定義的yizhuc函數(shù)達(dá)到改進(jìn)重選功能不必再次輸入序列號(hào)*/
yizhuce();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
system("pause");/*程序掛起*/
}
int jiemiweizhuce(int i=3,int a=0,int d=0)/*聲明解密未注冊(cè)(限制使用)函數(shù)*/
{
/*以下為未注冊(cè)限制代碼↓↓*/
while(i!=0)/*循環(huán)語(yǔ)句,設(shè)定條件為3次,達(dá)到三次后跳出循環(huán)語(yǔ)句即i等于3*/
{
printf("\n請(qǐng)輸入一組需解密的數(shù)字【未注冊(cè)】\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的數(shù)值并賦值給變量a*/
a=a-100000;/*逆行執(zhí)行加密算法↓↓*/
a=a-100009;
a=a-100052;
a=a-100878;
a=a-108546;
a=a-113545;
a=a-314123;/*逆行執(zhí)行加密算法↑↑*/
i--;/*運(yùn)行算法一次則i加1,達(dá)到三次后滿足循環(huán)條件*/
printf("\n\a ~\(≧▽≦)/~恭喜,已完成解密!密碼為:【%d】(還有【%d】次使用權(quán))\n\n",a,i);/*算法完成輸出真實(shí)密碼*/
printf("\n返回主菜單請(qǐng)輸入數(shù)字【3】,繼續(xù)解密請(qǐng)輸入任意數(shù)字\n\n ");/*提示*/
scanf("%d",&d);/*讀取用戶所輸入的數(shù)值并存入變量d*/
if(d==3)/*若變量d等于3則強(qiáng)制跳出循環(huán)*/
break;/*強(qiáng)制跳出循環(huán)*/
}
if(d==3)/*若變量d等于3則運(yùn)行以下代碼,否則省略本段代碼*/
{
int zhu();/*調(diào)用自定義的zhu函數(shù)*/
zhu();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
system("pause");/*程序掛起*/
int tishi();/*調(diào)用自定義的tishi函數(shù)*/
tishi();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
int jiemiyizhuce(int i=3,int a=0,int d=0)/*聲明解密已注冊(cè)(解除限制)函數(shù)*/
{
/*以下為已注冊(cè)無(wú)限制代碼↓↓*/
for(;;)/*循環(huán)語(yǔ)句,不設(shè)定條件*/
{
printf("\n請(qǐng)輸入一組需解密的數(shù)字【已注冊(cè),可無(wú)限使用】\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的數(shù)值并賦值給變量a*/
a=a-100000;/*逆行執(zhí)行加密算法↓↓*/
a=a-100009;
a=a-100052;
a=a-100878;
a=a-108546;
a=a-113545;
a=a-314123;/*逆行執(zhí)行加密算法↑↑*/
printf("\n\n\a ~\(≧▽≦)/~恭喜,已完成解密!密碼為:【%d】\n\n",a);/*算法完成輸出真實(shí)密碼*/
printf("\n返回主菜單請(qǐng)輸入數(shù)字【3】,繼續(xù)解密請(qǐng)輸入任意數(shù)字\n\n ");/*提示*/
scanf("%d",&d);/*讀取用戶所輸入的數(shù)值并存入變量d*/
if(d==3)/*若變量d等于3則強(qiáng)制跳出循環(huán)*/
break; /*強(qiáng)制跳出循環(huán)*/
}
if(d==3)/*若變量d等于3則運(yùn)行以下代碼,否則省略本段代碼*/
{
int yizhuce();/*調(diào)用自定義的yizhuc函數(shù)達(dá)到改進(jìn)重選功能不必再次輸入序列號(hào)*/
yizhuce();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
system("pause");/*程序掛起*/
}
/*******************************注冊(cè)驗(yàn)證及數(shù)字加密功能代碼**********************************/
/****************************************主要代碼*******************************************/
int zhu()/*自定義zhu函數(shù)*/
{
int a,i=3;/*聲明整數(shù)變量a、i,并把賦值3給i*/
printf("\n********************************************************************");
printf("\n 此程序?yàn)镃語(yǔ)言編寫,編譯器為:DEV-C++ 4.9.9.2 多國(guó)語(yǔ)言版");
printf("\n\n 愿結(jié)交對(duì)C語(yǔ)言深感興趣并研究過(guò)C語(yǔ)言的朋友\n 若有任何建議或愿共同探討請(qǐng)聯(lián)系QQ:0000000000\n 本程序,采用垃圾算法,純屬練習(xí)作品,各位不必當(dāng)真。\n");
printf("\n********************************************************************\n");
system("pause");
printf("\n作品名稱:數(shù)字密碼加密程序(二次改進(jìn)版)\n\n作品目的:增加對(duì)條件指令、循環(huán)指令的了解并熟悉自定義函數(shù)及調(diào)用函數(shù)的方法\n\n作品功能:實(shí)現(xiàn)注冊(cè)驗(yàn)證及對(duì)數(shù)字進(jìn)行加密、解密功能\n\n作品改進(jìn):利用函數(shù)調(diào)用改進(jìn)了選擇一個(gè)功能后必須重啟程序才能再次選擇另一種功能\n 改進(jìn)了每選擇一次功能都必須重新輸入序列號(hào)的缺陷\n\n作品缺陷:程序判斷用戶的選擇只能用數(shù)字否則出錯(cuò)(嘗試用過(guò)char類型),只能加密\n 9位數(shù)字否則不能正確解密(此BUG與算法無(wú)關(guān)),無(wú)論注冊(cè)碼是否正確重啟\n 程序后需再次輸入序列號(hào).以上原因尚不明確!⊙﹏⊙b汗.希望各位能多多\n 指教。");
printf("\n********************************************************************");
printf("\n\n O(∩_∩)O哈哈~,請(qǐng)選擇所需要的功能:\n\n 【1】:加密(目前只支持9位任意數(shù)字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只對(duì)本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*讀取用戶所輸入的選項(xiàng)并賦值給變量a*/
while(a>2)/*設(shè)定循環(huán)條件,達(dá)到輸入錯(cuò)誤選項(xiàng)即可循環(huán)執(zhí)行確認(rèn)選擇功能指令*/
{
printf("\n\n O(∩_∩)O哈哈~,不能亂選哦,請(qǐng)?jiān)俅握J(rèn)真選擇所需要的功能:\n\n 【1】:加密(目前只支持9位任意數(shù)字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只對(duì)本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*讀取用戶所輸入的選項(xiàng)并賦值給變量a*/
}
switch(a)/*判斷語(yǔ)句,在c++稱為開(kāi)關(guān)語(yǔ)句*/
{
case 1:/*若a等于1則運(yùn)行下面代碼*/
printf("\n (*^__^*) 歡迎使用本加密程序【注:試用版只能使用三次】\n");/*顯示說(shuō)明*/
printf("請(qǐng)輸入序列號(hào):\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的序列號(hào)并賦值給變量a*/
if(a!=0000000000)/*若用戶所輸入的序列號(hào)不等于0000000000則執(zhí)行下面的指令,否則跳過(guò)下面的指令*/
jiamiweizhuce();/*調(diào)用jiamiweizhuce函數(shù)*/
else/*若等于0000000000則運(yùn)行下面指令*/
jiamiyizhuce();/*調(diào)用jiamiyizhuce函數(shù)*/
break;/*跳出判斷語(yǔ)句避免“失敗經(jīng)過(guò)”*/
case 2:/*如果a等于2則運(yùn)行下面代碼*/
printf("\n (*^__^*) 歡迎使用本解密程序【注:試用版只能使用三次】\n");/*顯示說(shuō)明*/
printf("請(qǐng)輸入序列號(hào):\n\n ");/*顯示說(shuō)明*/
scanf("%d",&a);/*讀取用戶所輸入的序列號(hào)并賦值給變量a*/
if(a!=0000000000)/*若用戶所輸入的序列號(hào)不等于0000000000則執(zhí)行下面的指令,否則跳過(guò)下面的指令*/
jiemiweizhuce();/*調(diào)用jiemiweizhuce代碼*/
else/*若等于0000000000則運(yùn)行下面指令*/
jiemiyizhuce();/*調(diào)用jiemiyizhuce函數(shù)*/
break;/*跳出判斷語(yǔ)句避免“失敗經(jīng)過(guò)”*/
case 0:/*若a等于0則運(yùn)行下面代碼*/
exit(0);/*退出程序*/
break;/*跳出判斷語(yǔ)句避免“失敗經(jīng)過(guò)”*/
}
}
int tishi()/*自定義tishi函數(shù)*/
{
int q;/*聲明變量*/
printf("\n\a\a\a ╮(╯▽╰)╭對(duì)不起,您使用的次數(shù)已達(dá)到試用版的上限!\n\n"); /*警告用戶*/
printf("\n\n\nO(∩_∩)O哈哈~,告訴你一個(gè)秘密哈,若想再次使用可以再次運(yùn)行本程序,照樣\n還可以使用三次。不過(guò),如果你這樣做的話,也只能說(shuō)明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/
printf("\n返回主菜單請(qǐng)輸入數(shù)字【3】,退出請(qǐng)輸入任意數(shù)字\n\n ");/*提示*/
scanf("%d",&q);/*讀取用戶所輸入數(shù)值并存入變量q*/
if(q==3)/*若變量d等于3則運(yùn)行以下代碼,否則省略本段代碼*/
{
int zhu();/*調(diào)用自定義的zhu函數(shù)*/
zhu();/*原因尚不明確,若遇到函數(shù)調(diào)用不成功可再次寫一次函數(shù)名,有強(qiáng)制調(diào)用函數(shù)的作用*/
}
else/*若不等于則運(yùn)行下面代碼即退出,達(dá)到按任意數(shù)字鍵退出的目的*/
exit(0);/*退出程序*/
}
int yizhuce()/*自定義yizhuce函數(shù)*//*此函數(shù)已去除驗(yàn)證序列號(hào)的功能*/
{
int a,i=3;/*聲明整數(shù)變量a、i,并把賦值3給i*/
printf("\n********************************************************************");
printf("\n 此程序?yàn)镃語(yǔ)言編寫,編譯器為:DEV-C++ 4.9.9.2 多國(guó)語(yǔ)言版");
printf("\n\n 愿結(jié)交對(duì)C語(yǔ)言深感興趣并研究過(guò)C語(yǔ)言的朋友\n 若有任何建議或愿共同探討請(qǐng)聯(lián)系QQ:0000000000\n 本程序,采用垃圾算法,純屬練習(xí)作品,各位不必當(dāng)真。\n");
printf("\n********************************************************************\n");
system("pause");/*程序掛起代碼*/
printf("\n作品名稱:數(shù)字密碼加密程序(二次改進(jìn)版)\n\n作品目的:增加對(duì)條件指令、循環(huán)指令的了解并熟悉自定義函數(shù)及調(diào)用函數(shù)的方法\n\n作品功能:實(shí)現(xiàn)注冊(cè)驗(yàn)證及對(duì)數(shù)字進(jìn)行加密、解密功能\n\n作品改進(jìn):利用函數(shù)調(diào)用改進(jìn)了選擇一個(gè)功能后必須重啟程序才能再次選擇另一種功能\n 改進(jìn)了每選擇一次功能都必須重新輸入序列號(hào)的缺陷\n\n作品缺陷:程序判斷用戶的選擇只能用數(shù)字否則出錯(cuò)(嘗試用過(guò)char類型),只能加密\n 9位數(shù)字否則不能正確解密(此BUG與算法無(wú)關(guān)),無(wú)論注冊(cè)碼是否正確重啟\n 程序后需再次輸入序列號(hào).以上原因尚不明確!⊙﹏⊙b汗.希望各位能多多\n 指教。");
printf("\n********************************************************************");
printf("\n\n O(∩_∩)O哈哈~,請(qǐng)選擇所需要的功能:\n\n 【1】:加密(目前只支持9位任意數(shù)字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只對(duì)本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*讀取用戶所輸入的選項(xiàng)并賦值給變量a*/
while(a>2)/*設(shè)定循環(huán)條件,達(dá)到輸入錯(cuò)誤選項(xiàng)即可循環(huán)執(zhí)行確認(rèn)選擇功能指令*/
{
printf("\n\n O(∩_∩)O哈哈~,不能亂選哦,請(qǐng)?jiān)俅握J(rèn)真選擇所需要的功能:\n\n 【1】:加密(目前只支持9位任意數(shù)字,原因至今不明 (#‵′)凸\n\n 【2】:解密(只對(duì)本程序加密的密文有效)\n\n 【0】:退出\n\n ");
scanf("%d",&a);/*讀取用戶所輸入的選項(xiàng)并賦值給變量a*/
}
switch(a)/*判斷語(yǔ)句,在c++稱為開(kāi)關(guān)語(yǔ)句*/
{
case 1:/*若a等于1則運(yùn)行下面代碼*/
jiamiyizhuce();/*調(diào)用jiamiyizhuce函數(shù)*/
break;/*跳出條件語(yǔ)句避免“失敗經(jīng)過(guò)”*/
case 2:/*若a等于2則運(yùn)行下面代碼*/
jiemiyizhuce();/*調(diào)用jiemiyizhuce函數(shù)*/
break;/*跳出條件語(yǔ)句避免“失敗經(jīng)過(guò)”*/
case 0:/*若a等于0則運(yùn)行下面代碼*/
exit(0);/*退出程序*/
break;/*跳出條件語(yǔ)句避免“失敗經(jīng)過(guò)”*/
}
}
==========================================================================