精华内容
下载资源
问答
  • C语言精度数值问题

    2019-01-06 15:44:16
    #include<stdio.h> int main() { int a; long long b double d; long double e; scanf("%d",&a); scanf("%lld",&b); scanf("...int
    #include<stdio.h>
    int main()
    {
    	int a;
    	long long b
    	double d;
    	long double e;
    	scanf("%d",&a);
    	scanf("%lld",&b);
    	scanf("%lf",&d);
    	scanf("%Lf",&e);
    	return 0;
    }
    

    int 4字节 32位
    long long 8字节 64位
    double 64位
    long double 96位 部分编译器80位左右吧

    展开全文
  • # include # include char resu[1111];//结果数组较大,需定义为全局变量 int main() { void mult(char a[], char b[], char s[]);//定义大数相乘的函数,其中a[]用于存放被乘数;...//暂定数组长度,
    # include <stdio.h>
    # include <string.h>


    char resu[1111];//结果数组较大,需定义为全局变量


    int main()
    {
    void mult(char a[], char b[], char s[]);//定义大数相乘的函数,其中a[]用于存放被乘数;b[]用于存放乘数,s[]用于存放计算结果


    char BigNum1[65];//暂定数组长度,若要求更高,可更改
    char BigNum2[65];
    gets(BigNum1);
    gets(BigNum2);
    mult(BigNum1, BigNum2, resu);//调用mult函数
    printf("%s\n", resu);//输出最终结果


    return 0;
    }


    void mult(char a[], char b[], char s[])
    {
    int i, j, k = 0, alen, blen, sum = 0, res[65][65] = {0}, flag = 0;
    char result[65 ];
    alen = strlen(a);
    blen = strlen(b);


    for(i = 0; i < alen; i++)
    {
    for(j = 0; j < blen; j++)
    {
    res[i][j] = (a[i] - '0') * (b[j] - '0');//将a[]与b[]中的每个数字字符都转换为数字,然后相乘,存入数组res中
    }
    }
    for(i = alen - 1; i >= 0; i--)
    {
    for(j = blen - 1; j >= 0; j--)
    {
    sum = sum + res[i + blen - j - 1][j];
    }
    result[k] = sum % 10;//将个位存入result[]中
    k++;
    sum /= 10;//记录进位
    }


    for(i = blen - 2; i >= 0; i--)
    {
    for(j = 0; j <= i; j++)
    {
    sum = sum + res[i - j][j];
    }
    result[k] = sum % 10;
    k++;
    sum /= 10;
    }


    if (sum != 0)
    {
    result[k] = sum;
    k++;
    }
    for(i = 0; i < k; i++)//将result数组中的数字转换为数字字符
    {
    result[i] += '0';
    }
    for(i = k - 1; i >= 0; i--)//将result[]逆序存入s[]中
    {
    s[i] = result[k - i - 1];
    }
    s[k] = '\0';


    while(1)
    {
    if ((strlen(s) != strlen(a)) && (s[0] == '0'))//除去无效的0
    {
    strcpy(s, s + 1);
    }
    else
    {
    break;
    }
    }
    }
    展开全文
  • # include # include int main() { int Add(char a[], char b[], char sum[]);//定义大数相加函数 void print(char sum[], int result_len);//定义输出函数 ...char a[101], b[101], sum[102];...
    展开全文
  • ![图片说明]... 这段代码转成C语言行不通。。在C语言我试了缩小x的范围,整体都缩小了才能运行出正确答案。。 C语言跟JAVA还存在这方面的区别??
  • # include # include int main() { void mult(char c[], char t[], int m); //定义大数乘以小数的函数 其中c[]表示被乘数,t[]表示结果,m表示乘数 char BigNum[100];...scanf("%s", BigNum
    # include <stdio.h>
    # include <string.h>


    int main()
    {
    void mult(char c[], char t[], int m); //定义大数乘以小数的函数 其中c[]表示被乘数,t[]表示结果,m表示乘数


    char BigNum[100];
    char result[150];
    int SmallNum;


    scanf("%s", BigNum);
    scanf("%d", &SmallNum);
    mult(BigNum, result, SmallNum);
    printf("%s\n", result);


    return 0;
    }


    void mult(char c[], char t[], int m)
    {
    int i, l, k, flag, add = 0;
    char s[100];
    l = strlen(c);
    for(i = 0; i < l; i++)
    {
    s[l - i - 1] = c[i] - '0';//将大数逆序存放在数组s[]中,并转换成数字
    }
    for(i = 0; i < l; i++)
    {
    k = s[i] * m + add;//各位依次与乘数相乘,add表示进位。
    if (k >= 10)//若相乘大于十,则与10取余,并将进位记录下来
    {
    s[i] = k % 10;
    add = k / 10;//记录进位
    flag = 1;
    }
    else
    {
    s[i] = k;
    flag = 0;
    add = 0;
    }
    }


    if (flag)//若最后两数相乘所得的积大于大数的位数
    {
    while(add > 10)//若发现进位大于10时
    {
    l = i + 1;//数组长度加1
    s[i++] = add % 10;
    add /= 10;
    }
    l = i + 1;
    s[i] = add;
    }
    else
    {
    l = i;
    }
    for(i = 0; i < l; i++)
    {
    t[l - 1 - i] = s[i] + '0';//将s[]中的数组全部转换成数字字符并逆序存放在t[]中
    }
    t[l] = '\0';//在数组末尾加上终于符;
    }
    展开全文
  • 题目链接:3的幂 题目描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。 要求不用循环或递归,O(1)判断。 有各种奇奇怪怪的方法,打...C语言的log只有以10和e为底的,其他要用换底公式,如: log3(n)=lo...
  • C语言精度计算

    2012-04-17 16:23:03
    这是关于C语言精度运算的简单 概述
  • C语言精度乘法

    2013-07-21 20:02:46
    如何用C语言写高精度乘法,高精度乘法需要用到函数调用,指针等知识
  • C语言精度小数

    2019-10-03 16:43:49
    C语言精度小数 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。 (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的...
  • c 语言单精度和双精度的区别 c 语言单精度和双精度的区别单精度是这样的格式 1 位符号 8 位指数 23 位小数 双精度是 1 位符号 11 位指数 52 位小数 区别就是它所能存储的数值范围大小不同 双精度变量能存储比单精度...
  • c语言精度小数

    2020-04-23 22:55:32
    精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。 (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数...
  • c语言精度乘法

    2020-12-03 21:18:36
    精度乘法 众所周知,由于整型数不能满足过大数的运算,所以,在进行过大数的乘法运算时需要运用一种新的方法------高精度乘法。 下面我将介绍大数相乘的几个步骤。 1.输入两个乘数,并定义后面需要到的变量 #...
  • C语言精度加法

    2020-12-25 21:05:04
    希望大佬看到错误可以帮忙指出,第一次遇到需要高精度计算的题目,一开始傻乎乎的直接计算发现不得行,原来还能这样。 主要思路: 字符数组可以连续输入但又不是整型数字而是字符,而整型数组可以输入数字但又不能...
  • 一、高精度运算的概念高精度运算其实就是参与运算的数完全超出基本数据类型所能表示的范围的运算(例如int型范围就是 - 2147483648 ~+ 2147483647)所以如果想求较大数的话就要创建新的数据类型二、数据类型的选取我...
  • C语言精度加法

    2020-06-28 17:44:27
    问题描述  输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述  由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。  定义一个数组A,A[0]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,384
精华内容 1,753
关键字:

c语言精度

c语言 订阅