close

標題:

c語言不會做 請幫忙

發問:

假設有一個 五進位 數字(只有 0, 1, 2, 3, 4), 最多有四位數(範圍: 05 ~ 44445 ),寫一程式,使用者可以從鍵盤輸入五進位制之數字,程式執行後轉換成十進位之數字輸出。例如輸入 1234 則輸出 194。提示:(1) 先判斷是幾位數,判斷方式範例:輸入的數字是否在1000~4444之間,如果成立則有四位數輸入的數字是否在100~444之間,如果成立則有三位數à 以此類推10~44(二位數)、0~ 4(個位數)à 不在範圍內的即是輸入錯誤(2)... 顯示更多 假設有一個 五進位 數字(只有 0, 1, 2, 3, 4), 最多有四位數(範圍: 05 ~ 44445 ),寫一程式,使用者可以從鍵盤輸入五進位制之數字,程式執行後轉換成十進位之數字輸出。 例如輸入 1234 則輸出 194。 提示:(1) 先判斷是幾位數,判斷方式範例: 輸入的數字是否在1000~4444之間,如果成立則有四位數 輸入的數字是否在100~444之間,如果成立則有三位數 à 以此類推10~44(二位數)、0~ 4(個位數)à 不在範圍內的即是輸入錯誤 (2) 計算方式範例:12345=(1234/1000)×53+((1234%1000)/100)×52+((1234%100)/10)×51+(1234%10)×50) ?? à 三位數(100~444)、二位數(10~44)、個位數(0~4)請自行推算 (3)輸出格式: 您輸入的五進制數字 ”1234”, 轉成十進制的結果為” 194”. (其中五進制數字與十進制必須佔四格,如果輸入只有12,則格式為”? 12”,向右對齊, “(雙引號)也需列印出來)

最佳解答:

#include #include int main(void) { int input_number,output_number; printf("請輸入五進位制數字(0~4444): "); scanf("%d",&input_number); printf(" "); if(input_number >= 1000 && input_number = 100 && input_number = 10 && input_number = 0 && input_number
其他解答:

分成兩個function喔, 第一個function, valid,檢查是否為合法的輸入。 其中,利用ascii碼來檢查字元是否為0,~4 第二個function做轉換用。 測試過,沒有問題。 最後,再把輸出格式,整理成你要的。 ------------------------------------以下為程式---------------------------------------- // 所有底線,是為了對齊用。你只要把他一次取代成空白即可 #include #include #include #include #include using namespace std; bool valid(string str){ __if(str.length() == 0 || str.length() > 4)return false; // 檢查字串的長度 ____for(int i = 0 ; i 52 || (int)str[i] > input; __if(valid(input)){ ____cout

 

此文章來自奇摩知識+如有不便請留言告知

13413D6BADCE0D57

arrow
arrow
    創作者介紹
    創作者 elahism 的頭像
    elahism

    elahism的部落格

    elahism 發表在 痞客邦 留言(0) 人氣()