边锋的密码保护用的计算器源代码--无法执行的问题
以下源代码我是从网上摘录下来的,无法编译,请大家看看,问题出在哪里,#include
/*本程序是为边锋的密码保护用的计算器,第一行是两步结果,第二行是四步结果*//*程序中有一个goto语句,在main函数里完全可以去掉,这样程序运行一次只能计算一次*//*这个程序最主要的是程序的完整性,程序运行后不管你输入什么非法字符,都会有相应的语句,还支持退格*//*progammed by 旧爱最美*/
void thenumber(int g[]) /*取20位基数,输入20位后自动弹出,无需敲回车*/{int i,c,lenth,y;char pr[30]="\nplease input the number:";lenth=strlen(pr);for(i=0;i<20;i++)g[i]=0;printf(pr);for(i=0;i<20;i++){c=getche();if(c==8){i-=2;printf(" \b");if(i<-1){printf(":");i++;}continue;}g[i]=(c-48);if(g[i]>10 || g[i]<0){ printf("\a");if(g[i]==-35) /*对回车的抵御*/{y=wherey();gotoxy(lenth+i,y);}else printf("\b \b"); /*其余非法字符*/i--;continue;
}}}
void cryptogram(int g[]) /*取得密码,密码会被*覆盖*/{ int i,c,k=0,h[20]; /*k是计数器*/for(i=0;i<20;i++){g[i]=0;h[i]=0;}printf("\nplease input your cryptogram:");for(i=0;i<20;i++){c=getche();k++;if(c==8) /*对退格键的处理*/{i-=2;printf(" \b");if(i<-1) /*如果还没敲数字就退格就会发生错误,这是对这种情况的处理*/{printf(":");k++;i++;}k-=2;continue;}if(c==13){k=k-1;break;} /*回车,输入完毕*/if(c>58 || c<48) /*对非数字的处理*/{k--;i--;printf("\b \b");continue;} g[i]=c-48;printf("\b*"); /*这个就是用*覆盖密码*/}for(i=(20-k);i<20;i++)h[i]=g[i+k-20];for(i=0;i<20;i++)g[i]=h[i]; }
void twoadd(int g[],int h[]) /*(因为20位数太长了,只能放在数组里了),是两个20位数组相加,结果放在第一个数组里*/{int y[21],i; /*y[]是进位存储器*/y[20]=0;for(i=19;i>=0;i--){g[i]=g[i]+h[i]+y[i+1];y[i]=g[i]/10;g[i]%=10;}}
void tenadd(int g[],int h[]) /*两个10位数组相加*/{int z[11],i; /*z[]是进位存储器*/z[10]=0;for(i=9;i>=0;i--){g[i]=g[i]+h[i]+z[i+1];z[i]=g[i]/10;g[i]%=10;}}
void newone(int g[],int h[]) /*生成新的20位数组*/{ int i;for(i=0;i<20;i++){if(!g[i])g[i]=10;g[i]=h[g[i]-1];}}
void main(){int i,l,a,b;int m[20],n[20],x[10],y[10];next: for(i=0;i<20;i++){m[i]=0;n[i]=0;}for(i=0;i<10;i++){x[i]=0;y[i]=0;}thenumber(m);printf("\n\n");cryptogram(n);twoadd(m,n);for(i=0;i<10;i++){x[i]=m[i];y[i]=m[i+10];}tenadd(x,y);printf("\n\n\n");for(i=0;i<10;i++)printf("%d",x[i]);printf("\n\n\n");newone(m,x);for(i=0;i<10;i++){x[i]=m[i];y[i]=m[i+10];}tenadd(x,y);printf("\n\n");for(i=0;i<10;i++)printf("%d",x[i]);printf("\n\n\n");printf("press any two same keys to exit\nor press Esc to exit\npress Enter to continue\n");a=getche();if(a==27)exit();if(a==13)goto next;b=getche();if(a-b)goto next;}
友情链接:
Copyright © 2022 世界杯预选赛亚洲区_高达世界杯 - fzxzyy.com All Rights Reserved.