二/八/十六进制转换为十进制
#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.加上之前闰年的判断,素数的查找,我对于&&,||的运用更加熟练,理解更加透彻,基础知识把握的更牢固。
发现的问题:对代码的理解依旧浮于表面,与要花费大量时间才可完成,说到底,动手能力不好,思维不够敏锐,以后还要多多练习,熟能生巧。