主题:帮忙看下进制转换
程序实现输入2/8/16进制,通过选择输出对应的十进制数据
:::for循环中不明白是怎么实现的:::
#include<stdio.h>/*n进制转换为十进制*/
#include<string.h>
#include <stdlib.h>
void main()
{
long t1;
int i,n,t,t3;
char a[100];
printf("input the number string\n");
gets(a);
strupr(a);/*将制定字符串内的小写字母转变为大写字母*/
t3=strlen(a);//统计数组长度
t1=0;
printf("input the n(2/8/16):\n");
scanf("%d",&n);
for(i=0;i<t3;i++)
{
if(a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n)
{
printf("data error!!");
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("the decimal is %ld\n",t1);
}
:::for循环中不明白是怎么实现的:::
#include<stdio.h>/*n进制转换为十进制*/
#include<string.h>
#include <stdlib.h>
void main()
{
long t1;
int i,n,t,t3;
char a[100];
printf("input the number string\n");
gets(a);
strupr(a);/*将制定字符串内的小写字母转变为大写字母*/
t3=strlen(a);//统计数组长度
t1=0;
printf("input the n(2/8/16):\n");
scanf("%d",&n);
for(i=0;i<t3;i++)
{
if(a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n)
{
printf("data error!!");
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("the decimal is %ld\n",t1);
}