以下源代码我是从网上摘录下来的,无法编译,请大家看看,问题出在哪里,
#include <stdio.h>
#include <conio.h>
/*本程序是为边锋的密码保护用的计算器,第一行是两步结果,第二行是四步结果*/
/*程序中有一个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;
}