【C语言高精度计算】 |
您所在的位置:网站首页 › 阶乘值c语言 › 【C语言高精度计算】 |
计算A/B的精确值,设A,B是以一般整数输入,计算结果精确到小数后20位(若不足20位,末尾不用补0)。 输入样例1:4 3 输出样例1:4/3=1.33333333333333333333 输入样例2:6 5 输出样例2:6/5=1.2 输入样例3:30 5 输出样例3:30/5=6.0 代码: #include int main() { int a, b, num[21];//num存小数部分 scanf("%d %d", &a, &b); printf("%d/%d=%d.", a, b, a / b); for (int i = 1; i 1)//从小数部分最后往前排除0 i--; for (int j = 1; j >str1;//输入乘数str1 //cin>>str2;//输入乘数str2 strcpy(str2,str1); lena=strlen(str1); lenb=strlen(str2); for(i=0;i=10) { b[i] = 0; b[i+1]++; } else { break; } } for(i=1;i1))//删除前导0 lenc--; for(i=lenc;i>=1;i--)//倒序输出 { cout= 10) { b[j - 1]=b[j-1]+1; b[j] = b[j]-10; } } } for (i = 0; i < N; i++) if (b[i] != 0) break; for (x = i; x < N; x++) printf("%d", b[x]); return 0; } 7-5 高精度计算-高精度求积 (100分)输入两个高精度正整数M和N(M和N均小于100位)。 求这两个高精度数的积。 输入样例:36 3 输出样例:108 代码: #include #include int main() { char s1[1500], s2[1500]; scanf("%s%s", s1, s2); int n = strlen(s1), m = strlen(s2); int a[n], b[m]; int i, j; for (i = 0, j = n - 1; i < n; i++, j--) { a[i] = s1[j] - '0'; } for (i = 0, j = m - 1; i < m; i++, j--) { b[i] = s2[j] - '0'; } int c[3000]; for (i = 0; i < 3000; i++) { c[i] = 0; } for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { c[i + j] += a[i] * b[j]; } } for (i = 0; i < n + m; i++) { if (c[i] >= 10) { c[i + 1] += c[i] / 10; c[i] %= 10; } } for (j = 2999; j > 0; j--) { if (c[j] != 0) break; } for (i = j; i >= 0; i--) { printf("%d", c[i]); } printf("\n"); return 0; }
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |