進位制轉換(二)——二/八/十六進位制轉換為十進位制
阿新 • • 發佈:2018-12-26
二/八/十六進位制轉換為十進位制
#define _CRT_SECURE_NO_WARNINGS //為解決scanf函式不安全的警告問題 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { long t1; int i,n,c,t; char a[100]; printf("請輸入所要轉換的數字:"); gets(a); //將輸入的數存到陣列中 strupr(a); //求小寫字母轉換為大寫字母 c = strlen(a); //求陣列長度 t1 = 0; printf("請輸入所要轉換的數字的進位制數:"); scanf("%d", &n); for ( i = 0; i < c; i++) { if (a[i] - '0' >= n&&a[i] < 'A' || a[i] - 'A' + 10 >= n) //判斷進位制與輸入是否吻合 { printf("輸入錯誤!"); exit(0); //退出程式 } if (a[i] >= '0'&&a[i] <= '9') //判斷是否為數字 t = a[i] - '0'; else if (n>= 11 && a[i]>='A'&&a[i]<='A'+n-10) //判斷是否為字母 t = a[i] - 'A' + 10; t1 = t1*n + t; } printf("最終結果為:%1d\n",t1); system("pause"); //暫停,否則VS執行視窗會一閃而過,包含在標頭檔案#include<stdlib.h>中 return 0; }
注:根本是利用ASCII碼錶對應的數值,來判斷哪一進位制下對應的值。對於字母等,利用#include<string.h>中的strupr(),strlen()函式來確認輸入的數,通過for迴圈語句,if選擇判斷語句的綜合使用完成進位制的轉換。
學習收穫:1.明白了strupr(),strlen()函式的用法,且都是在標頭檔案#include<string.h>中。
strupr():將括號內的指定的字串中的小寫字母轉換為大寫字母,其餘字串不變。要加標頭檔案#include<string.h>。
strlen():用於求字串的長度。要加標頭檔案#include<string.h>。
2.明白如何利用ASCII碼錶判斷所輸入的是何數的方法。以及進位制的判斷方法。
3.加上之前閏年的判斷,素數的查詢,我對於&&,||的運用更加熟練,理解更加透徹,基礎知識把握的更牢固。
發現的問題:對程式碼的理解依舊浮於表面,與要花費大量時間才可完成,說到底,動手能力不好,思維不夠敏銳,以後還要多多練習,熟能生巧。