1. 程式人生 > >進位制轉換(二)——二/八/十六進位制轉換為十進位制

進位制轉換(二)——二/八/十六進位制轉換為十進位制

二/八/十六進位制轉換為十進位制

#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.加上之前閏年的判斷,素數的查詢,我對於&&,||的運用更加熟練,理解更加透徹,基礎知識把握的更牢固。

發現的問題:對程式碼的理解依舊浮於表面,與要花費大量時間才可完成,說到底,動手能力不好,思維不夠敏銳,以後還要多多練習,熟能生巧。