说明:做了个计算器,本来是要上传整个项目的,但突然发现不能上传资源了,就贴出来算法部分的代码,大家多多指点啊,呵呵,比较难读,以后再上传整个项目。
//转换,供乘法部分调用
int turn(char s[], int num[])
{
int i = 0, len, j;
while(1)
{
if(s[i] == 0) break;
else if(s[i] == '-' || s[i] == '0') i++;
else break;
} //i指向第一个非零数字
for (j = 0; s[j] != 0; j++) ;
j--; //j指向最后数字
for(len = 0; j >= i; j--, len++)
{
num[len] = (int)s[j] - 48;
}
return(len);
}
//转换,供除法部分调用
int turn2(char s[], int num[])
{
int i = 0, len, j;
while(1)
{
if(s[i] == 0) break;
else if(s[i] == '-' || s[i] == '0') i++;
else break;
} //i指向第一个非零数字
for (j = 0; s[j] != 0; j++) ;
j--; //j指向最后数字
for(len = 0; j >= i; i++, len++)
{
num[len] = (int)s[i] - 48;
}
return(len);
}
void mul(int *a, int *b, int *c, int len1, int len2)
{
int i, j;
for (i = 0; i < len1; i++)
{
for (j = 0; j < len2; j++)
{
c[i + j] += a[i] * b[j];
if (c[i+j] >= 10)
{
c[i+j+1] += c[i+j] / 10;
c[i+j] = c[i+j] % 10;
}
}
}
}
//比较大小,被Division函数调用
int cmp(int *a, int *b, int len1, int len2)
{
int i, len, result = 0, j;
for (i = 0; a[i] == 0; i++);
len = len1 - i;
if(len < len2) result = -1;
else if(len > len2) result = 1;
else
{
for (j = 0; i < len1, j < len2; i++, j++)
{
if (a[i] > b[j])
{
result = 1;
break;
}
if (a[i] < b[j])
{
result = -1;
break;
}
}
}
return(result);
}
责任编辑:cyth