进制转换(二)——二/八/十六进制转换为十进制

二/八/十六进制转换为十进制

#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.加上之前闰年的判断,素数的查找,我对于&&,||的运用更加熟练,理解更加透彻,基础知识把握的更牢固。

发现的问题:对代码的理解依旧浮于表面,与要花费大量时间才可完成,说到底,动手能力不好,思维不够敏锐,以后还要多多练习,熟能生巧。

 

 

猜你喜欢

转载自blog.csdn.net/qq_42659468/article/details/84570842
今日推荐