大数据的加法、减法、乘法以及阶乘的计算问题(源代码附上)(五)

2014-11-24 08:53:06 · 作者: · 浏览: 4
30;
}
if (temp > 0) {
//每一次循环结束检查最高位以及那些结果不为k位数的
temp_res[k] = flag + 0x30;
}
flag = 0x0;//重置
}
}
if (temp > 0) {
//有进位
strncpy(res, &temp_res[k], m - k);
res[m - k] = '\0';
} else {
strncpy(res, &temp_res[k+1], m - k - 1);
res[m-k-1] = '\0';
}
free(temp_res);
} else {
sprintf(res, "%d", data);
if (res[0] == 0x30) {
res[0] = 0x31;
}
}
}

void show_choice()
{
printf("**************大数计算问题****************\n");
printf("*请选择操作类型 *\n");
printf("*1.加法 2.减法*\n");
printf("*3.乘法 4.阶乘*\n");
printf("******************5.退出******************\n");
printf("******************************************\n");
}

void show_input(const char *choice)
{
char a[500], b[500], c[1000000];
switch (*choice) {
case 1:
printf("请输入加数(输入不是数字,后果自负): ");
scanf("%s", a);
printf("请输入被加数(输入不是数字,后果自负): ");
scanf("%s", b);
if (a[0] >= 0x30 && a[0] <= 0x39 || a[0] == '-' && b[0] >= 0x30 && b[0] <= 0x39 || b[0] == '-') {
if (a[0] == '-' && b[0] == '-') {
big_add(&b[1], &a[1], c);
printf("结果为: -%s\n", c);
} else if (a[0] == '-' && b[0] != '-') {
big_sub(b, &a[1], c);
printf("结果为: %s\n", c);
} else if (a[0] != '-' && b[0] == '-') {
big_sub(a, &b[1], c);
printf("结果为: %s\n", c);
} else {
big_add(a, b, c);
printf("结果为: %s\n", c);
}
} else {
printf("请输入整数\n");
}
break;
case 2:
printf("请输入减数(输入不是数字,后果自负): ");
scanf("%s", a);
printf("请输入被减数(输入不是数字,后果自负): ");
scanf("%s", b);
if (a[0] >= 0x30 && a[0] <= 0x39 || a[0] == '-' && b[0] >= 0x30 && b[0] <= 0x39 || b[0] == '-') {
if (a[0] == '-' && b[0] == '-') {
big_sub(&b[1], &a[1], c);
printf("结果为: %s\n", c);
} else if (a[0] == '-' && b[0] != '-') {
big_add(&a[1], b, c);
printf("结果为: -%s\n", c);
} else if (a[0] != '-' && b[0] == '-') {
big_add(a, &b[1], c);
printf("结果为: %s\n", c);
} else {
big_sub(a, b, c);
printf("结果为: %s\n", c);
}
} else {
printf("请输入整数\n");
}
break;
case 3:
printf("请输入乘数(输入不是数字,后果自负): ");
scanf("%s", a);
printf("请输入被乘数(输入不是数字,后果自负): ");
scanf("%s", b);
if (a[0] >= 0x30 && a[0] <= 0x39 || a[0] == '-' && b[0] >= 0x30 && b[0] <= 0x39 || b[0] == '-') {
if (a[0] == '-' && b[0] == '-') {
big_mul(&a[1], &b[1], c);
printf("结果为: %s\n", c);
} else if (a[0] == '-' && b[0] != '-') {
big_mul(&a[1], b, c);
printf("结果为: -%s\n", c);
} else if (a[0] != '-' && b[0] == '-') {
big_mul(a, &b[1], c);
printf("结果为: -%s\n", c);
} else {
big_mul(a, b, c);
printf("结果为: %s\n", c);
}
} else {
printf("请输入整数\n");
}
brea