国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

UVa 355 - The Bases Are Loaded

2019-11-06 07:18:13
字體:
來源:轉載
供稿:網友

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

int ifover(char c[],int a){

int statue = 0;

for(int i = 0; i < strlen(c); i++) {

if(c[i] >= '0' && c[i] <= '9'){

if(c[i] - '0' >= a)

statue = 1;

}else{

if(c[i] - 'A' + 10 >= a)

statue = 1;

}

}

return statue;

};//判斷是否超出范圍

int main(){

char c[11] = {0};

int a,b;

a = b = 0;

while(~scanf("%d %d %s",&a,&b,c)){

   //     if((a < 2 || a > 16) || (b < 2 || b > 16))

   //         PRintf("%s is an illegal base %d number/n",c,a);

if(ifover(c,a))

  printf("%s is an illegal base %d number/n",c,a);

else{

char m[42] = {0};

    char * pEnd;

        long long decimal = strtol(c, &pEnd , a);//十進制

/*long long decimal= 0LL;

for ( int i = 0 ; c[i] ; ++ i ) {

decimal *= a;

decimal += ctoi(c[i]);

}*/

for(int i = 0;i < 42;i++) {

int temp = decimal % b;

if(temp <= 9) m[42 - 1 - i] = temp + '0'; /////////////罪魁禍首

else m[42 - 1 - i] = temp - 10 + 'A';

decimal /= b;

if(decimal == 0) break;

}

printf("%s base %d = ",c,a);

int i = 0;

while(m[i] == '/0')  i++;

for(; i < 42; i++) printf("%c",m[i]);

printf(" base %d/n",b);

}

}

return 0;

}

1 這道題卡了我兩天,不知道wa了多少次,最后錯在標注了罪魁禍首的那一句,我把判斷條件寫成了小于42,真的不知道自己腦子怎么這么短路,氣死爸爸了

2 最后證明,雖然并不明確strtol的函數中,中間參數的功能,但一般用起來還是沒有問題的

3 把具體功能抽象成函數,有利于尋找錯誤

4 還發現了一中查錯比較好的方法。把別人和自己的代碼都放在coderunner的一個屏幕上,一個一個的實驗數據,要相信一定會有問題的

5 關于極端情況的思考,這里面最長的一個數就是把16進制的十個F轉換成2進制,會用40位,剛開始沒有考慮周全


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内黄县| 石棉县| 工布江达县| 同江市| 静乐县| 徐州市| 连城县| 泰兴市| 青田县| 历史| 荔波县| 平南县| 武定县| 嵩明县| 天峻县| 怀安县| 藁城市| 雅江县| 万盛区| 沈丘县| 黄梅县| 舒城县| 中超| 东明县| 民和| 龙岩市| 阿坝县| 彝良县| 沁水县| 崇义县| 浠水县| 松江区| 福州市| 视频| 拉孜县| 洪雅县| 彩票| 襄城县| 青海省| 五华县| 班戈县|