• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Welcome to Leon's Blog  
            日歷
            <2008年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567
            統(tǒng)計(jì)
            • 隨筆 - 30
            • 文章 - 0
            • 評(píng)論 - 51
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿(4)

            隨筆分類(lèi)

            隨筆檔案

            ACM

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             

                  這道題我做的很郁悶,代碼也寫(xiě)的不好、很長(zhǎng),方法也一般,有點(diǎn)麻煩,自己都覺(jué)得很爛,在提交的時(shí)候,發(fā)現(xiàn)別人的代碼寫(xiě)的很簡(jiǎn)練,但是不知道自己該怎么改進(jìn),希望大家多多提意見(jiàn),謝謝大家了!

             

              1#include <string.h>
              2#include <stdio.h>
              3#define LENGTH 100
              4
              5typedef struct Number
              6{
              7    int number;
              8    int point;
              9    int power;
             10}
            Number;
             11
             12void ConverTo(char *ch, int *real, int *p)
             13{
             14    int b = 1 ,sign = 1;
             15    char *= ch;
             16    *real = 0;
             17    *= 0;
             18    for( ; *!= '\0' && *!= '.'; c++)
             19        *real = (*real)*10 + (*- '0');
             20    if*== '\0')
             21    {
             22        *= 0;
             23    }

             24    else
             25    {
             26        *= c-ch;
             27        while*(++c) != '\0')
             28            *real = (*real)*10 + (*- '0');
             29        *= c-ch-1- *p;
             30    }

             31}

             32
             33void Caculate(int *number, int real, int *p, int n, int size)
             34{
             35    int sum = 0;
             36    int i ,t1, t2;
             37    t1 = t2 = 0;
             38    while( n-- > 0)
             39    {
             40        for(i = size-1; i >= 0; i--)
             41        {
             42            t1 = number[i]*real +t2;
             43            number[i] = t1 % 10000;
             44            t2 = t1 / 10000;
             45        }

             46        sum += *p;
             47    }

             48    *= sum;
             49}

             50
             51void Convert(char *ch, int *index, int *number, int *left, int right)
             52{
             53    int temp;
             54
             55    while(*left <= right)
             56    {
             57        temp = number[(*left)++];
             58        ch[(*index)++= temp/1000 + '0';
             59        temp  -= (temp/1000* 1000;
             60        ch[(*index)++= temp/100 + '0';
             61        temp -= (temp/100* 100;
             62        ch[(*index)++= temp/10 + '0';
             63        ch[(*index)++= temp%10 + '0';
             64        
             65    }

             66}

             67void ConverToChar(char *ch, int length,int *number, int left, int right, int point)
             68{
             69    int last,index, temp, p;
             70    index = 0;
             71    p = point/4;
             72
             73    Convert(ch, &index, number, &left, p-1);
             74    temp = number[left++];
             75    for(last = 0,p = 1000; last < 4; last++, p /= 10)
             76    {
             77        if( (4*(left-1+ last) == point)
             78            ch[index++= '.';
             79        ch[index++= temp/+ '0';
             80        temp -= (temp/p) * p;
             81    }

             82    Convert(ch, &index, number, &left, right);
             83}

             84
             85void Print(int *number, int p, int size)
             86{
             87    int left, right,index;
             88    char ch[200];
             89
             90    index = (size*4-p)/4;
             91    memset(ch, 0sizeof(ch));
             92
             93    for(left = 0; left < index; left++)
             94    {
             95        if(number[left] == 0)
             96            continue;
             97        else
             98            break;
             99    }

            100    for(right = size-1; right > index; right--)
            101    {
            102        if(number[right] == 0)
            103            continue;
            104        else
            105            break;
            106    }

            107    ConverToChar(ch, sizeof(ch)-1, number, left, right, size*4-p);
            108    for(left = 0; ch[left] == '0'; left++)
            109        ;
            110    for(right = sizeof(ch)-1; ch[right] == '\0' || ch[right] == '0'; right--)
            111        ;
            112    if(ch[right] == '.')
            113        right--;
            114    while(left <= right)
            115        printf("%c", ch[left++]);
            116    printf("\n");
            117}

            118
            119int main(int argc, char* argv[])
            120{
            121
            122    char ch[7];
            123    Number n[LENGTH];
            124    int i = 0, count = 0, p = 0;
            125    int number[30];
            126    memset(ch, 0sizeof(ch));
            127    while(scanf("%s %d", ch, &p) == 2)
            128    {
            129        ConverTo(ch, &n[count].number, &n[count].point);
            130        n[count].power = p;
            131        if(!(p<= 25 && p >0|| !(n[count].number> 0 && n[count].number < 99999))
            132        {
            133            break;
            134        }

            135        memset(ch,0sizeof(ch));
            136        count++;
            137    }

            138    while(i < count)
            139    {
            140        memset(number, 0sizeof(number));
            141        number[sizeof(number)/sizeof(int)-1= 1;
            142        Caculate(number, n[i].number, &n[i].point, n[i].power, sizeof(number)/sizeof(int)); 
            143        Print(number,n[i].point,sizeof(number)/sizeof(int));
            144        i++;
            145    }

            146    return 1;
            147}
            posted on 2008-05-22 14:16 Leon916 閱讀(1555) 評(píng)論(1)  編輯 收藏 引用
            評(píng)論:

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


             
            Copyright © Leon916 Powered by: 博客園 模板提供:滬江博客
            亚洲精品无码久久毛片| 久久久久久国产精品美女| 国产精品99久久久精品无码| 91久久精品国产91性色也| 伊人久久大香线蕉av不卡 | 久久精品综合网| 久久国产乱子伦精品免费强| 亚洲精品乱码久久久久久蜜桃不卡 | 91精品国产高清久久久久久91| 久久亚洲精精品中文字幕| 熟妇人妻久久中文字幕| 久久青青草原精品国产| 久久久噜噜噜久久中文福利| 久久精品麻豆日日躁夜夜躁| 久久99精品久久久久久动态图| 久久人人爽人人爽人人片AV不| 中文字幕久久波多野结衣av| 精品永久久福利一区二区| 97久久精品人妻人人搡人人玩| 99久久国产综合精品麻豆| 狠狠色综合网站久久久久久久| 久久精品成人免费国产片小草 | 欧美午夜A∨大片久久| 日韩欧美亚洲国产精品字幕久久久 | 国产V综合V亚洲欧美久久| 岛国搬运www久久| 性高湖久久久久久久久AAAAA| 亚洲午夜久久久影院| 99久久国产综合精品麻豆| 日韩久久无码免费毛片软件| 久久亚洲精品成人AV| 久久夜色精品国产www| 亚洲综合精品香蕉久久网| 久久久九九有精品国产| 亚洲色欲久久久久综合网 | 国产福利电影一区二区三区,免费久久久久久久精| 久久综合欧美成人| 少妇熟女久久综合网色欲| 久久精品国产半推半就| 热综合一本伊人久久精品| 99久久精品毛片免费播放|