今天看到的一个小代码段,功能如题目所示,代码如下:
#include<stdio.h>
#include<string.h>
main()
{
int i,t,n,L;
char a[100];
long t1=0;//用来存放十进制数字//
printf("input the number:");
gets(a);
L=strlen(a);//数组a的长度
strupr(a);//把字符串中的小写字母转换成大写字母//
printf("进制n:");//输入是几进制数字
scanf("%d",&n);
for(i=0;i<L;i++)
{
if(a[i]<'A'&&a[i]-'0'>=n||a[i]-'A'+10>=n)
//判断输入的数据是不是与进制相符合
{
printf("进制错误!");
exit(0);
}
if(a[i]>='0'&&a[i]<='9')//判断是否为数字
t=a[i]-'0';//把字符装换成对应的数字(例:‘0’变成0)
else if(n>=11&&(a[i]>='A'&&a[i]<='A'+n-10))
t=a[i]-'A'+10;
t1=t1*n+t;
}
printf("对应的十进制数值:%d\n",t1);
}
用到了一个strupr函数,是把小写字母转换成大写,是在头文件string.h中定义的,可以直接拿来使用;也可以自己写,可以参考一下如下代码:
void strupr(char *p)
{
int i=0;
while((*(p+i))!='\0')
{
if(*(p+i)>='a'&&*(p+i)<='z')
*(p+i)=*(p+i)-32;
i++;
}
}