c语言科学计数法溢出
答案:2 悬赏:50
解决时间 2021-02-15 06:06
- 提问者网友:神仙爷爷
- 2021-02-14 11:14
c语言科学计数法溢出
最佳答案
- 二级知识专家网友:花一样艳美的陌生人
- 2021-02-14 12:32
在C语言中,如果要进行特大数的运算可以使用数组实现。如(一定部分用伪码实现,可自己补充完整):#includeint main( ){ char a[1000] , b[1000] ; int aa[1000] , bb[1000] , cc[1010] ; int i = 0 , j = 0 , temp = 0 ; gets( a ); get( b ) ; int along = strlen( a ) , blong = strlen( b ) , max ; for ( i = 0 ; i < strlen( a ) ; i++ ) aa[--along] = (int)( a[i] - 48 ) ; //倒序,为了高位进位运算方便 for ( i = 0 ; i < strlen(b ) ; i++ ) bb[--blong] = (int)( b[i] - 48 ); // 下面以加法为例 max = ( strlen( aa ) > strlen ( bb ) ? strlen( aa ) : strlen( bb ) ; if( max == strlen( aa ) ) //未足高位补0 for( i = strlen( bb ) - 1 ; i < max ; i ++ ) b[i] = 0 ; for( j = 0 ; j < max ; j++ ) { cc[j] = ( a[j] + b[j] +temp ) % 10 ; temp = ( a[j] + b[j] +temp ) / 10 ; } for( j = strlen( cc ) - 1 ; j >= 0 ; j++ ...在C语言中,如果要进行特大数的运算可以使用数组实现。如(一定部分用伪码实现,可自己补充完整):#includeint main( ){ char a[1000] , b[1000] ; int aa[1000] , bb[1000] , cc[1010] ; int i = 0 , j = 0 , temp = 0 ; gets( a ); get( b ) ; int along = strlen( a ) , blong = strlen( b ) , max ; for ( i = 0 ; i < strlen( a ) ; i++ ) aa[--along] = (int)( a[i] - 48 ) ; //倒序,为了高位进位运算方便 for ( i = 0 ; i < strlen(b ) ; i++ ) bb[--blong] = (int)( b[i] - 48 ); // 下面以加法为例 max = ( strlen( aa ) > strlen ( bb ) ? strlen( aa ) : strlen( bb ) ; if( max == strlen( aa ) ) //未足高位补0 for( i = strlen( bb ) - 1 ; i < max ; i ++ ) b[i] = 0 ; for( j = 0 ; j < max ; j++ ) { cc[j] = ( a[j] + b[j] +temp ) % 10 ; temp = ( a[j] + b[j] +temp ) / 10 ; } for( j = strlen( cc ) - 1 ; j >= 0 ; j++ ) printf( "%d" , cc[j] ) ; return 0 ;} 唉……,时间太早了,我得睡了,程序还没运行的,不过算法是没问题的,你自己再高度一下,晚安
全部回答
- 1楼网友:一只傻青衣
- 2021-02-14 13:05
高精度计算请自己用链表或者字符数组实现数据结构,别说long double,64位同样不够。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯