首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

2的x次幂的值

发布网友 发布时间:2024-10-21 07:35

我来回答

3个回答

热心网友 时间:18小时前


 
 
不错的一道题!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* NOSD for printing (see NOSD below) */
#define NOSD_PRINT 32

/* number of significant digit in our HPFP (high-precision floating-point): NOSD + ~20% */
#define NOSD ( NOSD_PRINT + NOSD_PRINT / 5 )

/* the HPFP, initialized to 1 */
char significand[ NOSD ] = { 1 };   /* using "char" to make use of memmove( ) */
int  exponent;

/* multiplies our HPFP by the least significant digit of d */
void multiplyByOneDigit( unsigned d ) {
    /* do the LSD (least significant digit) first,
       then start the loop from the digit on its left */
    char *digit = significand + NOSD - 1;
    d %= 10;
    for ( *digit *= d; significand <= --digit; ) {
        *digit *= d;
        if ( *( digit + 1 ) > 9 ) { /* carry from lower digit */
            *digit += *( digit + 1 ) / 10;
            *( digit + 1 ) %= 10;
        }
    }
    if ( *significand > 9 ) { /* MSD overflows: drop LSD */
        memmove( significand + 1, significand, NOSD - 1 );
        *significand = *( significand + 1 ) / 10;
        *( significand + 1 ) %= 10;
        ++exponent;
    }
}

void divideByOneDigit( unsigned d ) {
    char *digit = significand;
    d %= 10;
    for ( ; digit <= significand + NOSD - 1; digit++ ) {
        if ( digit != significand + NOSD - 1 )
            *( digit + 1 ) += *digit % d * 10;
        *digit /= d;
    }
    if ( *significand == 0 ) {
        memmove( significand, significand + 1, NOSD - 1 );
        --exponent;
    }
}

/* returns the string representation of our HPFP */
char *toString( ) {
    char *s = calloc( NOSD_PRINT + 30, 1 );  /* enough room even if int is 64-bit */
    int digit_index = 0;
    for ( ; digit_index < NOSD_PRINT; digit_index++ )
        s[ digit_index ] = significand[ digit_index ] + '0';

    /* potential round up of last digit, hence potential carry propagation */
    if ( significand[ digit_index ] > 4 )
        if ( ++s[ digit_index - 1 ] > '9' ) {
            int i = digit_index - 1;
            while ( --i && s[ i + 1 ] > '9' ) {
                s[ i + 1 ] -= 10;
                s[ i ]++;
            }
        }

    /* normalize: discard trailing zeroes */
    while ( s[ --digit_index ] == '0' && digit_index - 1 )
        s[ digit_index ] = 0;

    /* convert to scientific format */
    memmove( s + 2, s + 1, strlen( s ) - 1 );
    s[ 1 ] = '.';
    sprintf( s + digit_index + 2, "e%+04d", exponent );

    return s;
}

void main( ) {
    int exp, isNegative;
    char input[ 99 ];
    puts( "Enter the exponent (must be an integer between -1000 and 1000):" );
    for ( ; ; ) {
        gets( input );
        if ( strchr( input, '.' ) != NULL ) {
            puts( "Decimal point isn't allowed in integer. Try again:" );
            continue;
        }
        exp = atoi( input );
        if ( strlen( input ) > 5 || exp < -1000 || 1000 < exp ) {
            puts( "The integer's out of range. Try again:" );
            continue;
        }
        break;
    }
    isNegative = exp < 0 ? exp *= -1 : 0;
    while ( exp-- )
        if ( isNegative )
            divideByOneDigit( 2 );
        else
            multiplyByOneDigit( 2 );

    fprintf( stdout, "Result:\n\t%s\n", toString( ) );
}
 
 

热心网友 时间:18小时前

#include "stdio.h"
#include "string.h"
#define MAX 1001
int num[MAX],n,b;
int isos(int a)/*判断是否是偶数*/
{
switch(a)
{
case 0:
case 2:
case 4:
case 6:
case 8:return 1;
default:return 0;
}
}
void chengfa(void)/*以前写的,没有优化,效率可能不高*/
{
int i;
for(i=1;i<=num[0];i++)
{
num[i]*=2;
}
for(i=1;i<=num[0];i++)
{
if(num[i]>9)
{
num[i+1]+=num[i]/10;
num[i]%=10;
}
}
if(num[num[0]+1]>0)num[0]++;
}
void chufa(void)
{
int i;
for(i=num[0];i>=1;i--)
{
if(isos(num[i])) num[i]/=2;
else
{
num[i]/=2;
num[i+1]+=5;
}
}
if(num[num[0]+1]>0)num[0]++;
}
void zjisuan()
{
while(b<n)
{
chengfa();
b++;
}
}
void fjisuan()
{
while(b>n)
{
chufa();
b--;
}
}
void zprint()
{
int i,r[MAX];
memset(r,0,sizeof(r));
r[0]=num[0];
for(i=1;i<=num[0];i++) r[r[0]+1-i]=num[i];
printf("%d.",r[1]);
for(i=2;i<=64;i++) printf("%d",r[i]);
printf("\be+%d\n",r[0]-1);
}
void fprint()
{
int i=1,j;
while(!num[i]) i++;
printf("%d.",num[i]);
for(j=i+1;j<=i+64;j++)printf("%d",num[j]);
printf("\be-%d\n",i-1);
}
int main()
{
memset(num,0,sizeof(num));
b=0;
num[0]=1;num[1]=1;
printf("请输入指数:");
scanf("%d",&n);
if(n>0){ zjisuan();zprint();}
if(n<0){ fjisuan();fprint();}
system("pause");
return 0;
}

热心网友 时间:18小时前

http://www.qaohoo.com
断路器的符号QF "NVEQF"缩写代表什么? “QF”代表“卡塔尔基金会”吗? “QF”作为“充满颤动”的英文缩写,其在英语中的应用和流行程度... 为娘甚是欣慰的句子 请问练瑜伽一星期最好练几次?最佳时间段是几点至几点?谢谢! ...瑜伽每天练多久最好?每天最好是什么时间段练习... 脂肪+苏丹Ⅲ染液=粉红色??? 青岛有加工天然水晶的地方么?自己有原石 青岛哪里有加工天然水晶的? 加工水晶球源头在哪里 我有2颗纯天然的水晶,哪里可以进行加工。 高铁票机票哪个app订比较好 10字以内说说:爱是否应伪装痛? 爱在深处作文450字 深层含义的表白句子(爱在深处,永存不灭) 爱在深处:关于爱情最深处的探讨与思考 爱在深处观后感 岱宗坊建筑特点 新华保险红双喜金钱柜(分红型)五年交费的 向盛有10mL氢氧化钠溶液的烧杯中滴加稀盐酸,图中能体现溶液的pH变化情... ...同学们从不同角度对稀盐酸与氢氧化钠溶液的反应进行了探究,请你填... 孕妇洗澡正确的清洁方法 孕妇沐浴需要注意哪些问题? 什么样的沐浴液适合孕妇使用? 放贷牌照叫什么 借款需要什么牌照 wowit'sbeautifu|!是什么意思 铸造全瓷牙的专家求解答,哪种全瓷牙辐射最小?铸瓷、二氧化镐、二氧化铝... 开学第一课观后感600字,help!!! 关于2016年开学第一天的观后感六百字主持人是撒贝宁 2o16年看开学第一天读后感 营业执照过期了收款码收到了钱怎么办 个体户营业执照过期了还能申请收款二维码吗? 知道银行或存折卡号就能到柜台存钱了吗?不需要带存折或卡吗? 专本套读需要花多少钱 如何做披萨用电饼铛 披萨怎么做家庭做法(披萨怎么做家庭做法空气炸锅烤披萨) 爱情自有天意第77集里面程曦与唐正摔倒项链缠在一起时的背景音乐_百度... ...现在单位要给我买社保,怎么会出现天心区灵活就业人员的单位,现在要... 交了雨花区灵活就业社保可以转到天心区的灵活就业社保吗? ...长沙天心区职工要一次缴多少钱,每月能领多少养老金? 我原来是在天心区社保中心办理的灵活就业人员养老保险和医保,现在要... 第一天胃痛胃痉挛,拉肚子;第二天胸闷,胸口痛.伴有轻微胃痛.麻烦专家... 早上起床脑子疼,还恶心想吐,已经吐出一些胃酸。请问是怎么回事... 万字详解pytorch基础语法(二) 同学,你需要一个狗屁不通文章生成器么 ...我想在本网页内的一个表格内显示另外一个网页,代码怎么写_百度... ...而苦恼,一个周末,他的父亲带着他去爬山在爬山的过程中, ...参数.X1,X2,...,Xn为来自该总体的一个样本, 怎样防止蚂蚁进入家中? 数学里 1.12 E 30是什么意思 一千5左右买什么性价比高的手机? ...了华为p8青春版和小米4,但我不知道那款手机好一点,希 ...喝伤了怎么办,现在一杯都想吐,不知道是胃不行了,还是喉咙问题_百度... 喉咙被小骨头卡住了,后来吞下去了,但是感觉伤了里面不舒服,怎么办? 中兴cpe每月什么时间给流量 风湿性心脏病患者的护理措施 慢性风湿性心脏病常见的并发症包括哪些 风湿性心瓣膜病最常见的心律失常 卖点行销特点 顾问式行销:中国式保险行销策略和案例作者简介 顾问式行销:中国式保险行销策略和案例图书信息 毕业留言唯美句子,伤感的句子,伤感语录:篱笆外的猫不再受宠有些事我懂... p10室外单色LED显示屏串口出错怎么办啊? 6312轴承大概多少钱? 想改变浴室柜下水管的位置,请问怎么改 ...武侠)耽美小说,要虐的,程度如何无所谓,结局要HE,就算BE也别太悲了... 淘宝信用支付是什么意思? 淘宝里的信用支付是什么意思? 房产证可以到银行贷款吗 香蕉牛奶可以和哈密瓜一起吃? ...时发生1015错误,然后手机开机就显示与itunes连接界面 无法正常开机... 什么是花班司机 什么是花班司机 ...天我俩说的话不多,她上下班我天天接送她,她说她不需要司机... ...和数据线给剪了。还给劳资脸色看。放假肯定让他挨打... 由于塘沽轻轨9号线炸毁了,从塘沽到和平区营口道怎么去?做高铁到天津然... 塘沽地铁站距离塘沽营口道611号多远? 塘沽火车站怎么到轻轨一号线 天津塘沽地铁站到船上小镇坐几号线 请问谁能告诉我最短时间学习五笔的方法? 练会五笔要多长时间 平塘有什么好玩的地方?哪些景点必去,贵州平塘旅游景点 张娜拉的新剧《童颜美女》不好看吗?为什么PPS和优酷的评分那么低_百度... 谁知道童颜美女张娜拉唱的那首歌的中文歌词是什么? 金融消费者权益保护实施办法的实施时间是哪一年 云南绿业元果蔬有限责任公司怎么样? 厦门季阳果蔬有限公司怎么样? 济宁嘉汇果蔬有限公司怎么样?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com