n进制转换为十进制

实例说明:

编程实现任意输入一个数并输入其进制,即可将该数转换为十进制输出。

技术要点:

(1)程序中用到了字符串函数strupr()和strlen(),前者用于将括号内指定字符串中的小写字母转换为大写字母,其余字符串不变,后者用于求括号中指定字符串的长度,即有效字符的个数。使用这两个函数前应在程序开头加入如下语句: #include<string.h>

(2) 本例的主要思路是用字符型数组a存放一个n进制数,再对数组中的每个元素进行判断,

如果是0~9的数字则进行以下处理:  t=a[i]-‘0‘;

如果是字母则进行以下处理:t=a[i]-‘A‘+10;

如果输入的数据与进制不符,则输出数据错误并退出程序。

过程实现:

(1)在VC中创建一个c文件。

(2)引用头文件。代码如下:

#include <stdio.h>

#include<string.h>

(3)开始主函数的编写,从键盘中输入数据并输入其进制,如果数据与进制不符则输出错误并退出程序,否则判断是数据还是字母并进行相应处理。

代码实现:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
	long t1;
	int i,n,t,t3;
	char a[100];
	printf("please input a number:\n");
    gets(a);
	strupr(a);
	t3=strlen(a);
	t1=0;
	printf("please input n(2 or 8 or 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);
	return 0;
}

运行测试:运行正确

时间: 2024-08-02 10:12:26

n进制转换为十进制的相关文章

C语言:其他进制转换为十进制(方法二)

#include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他任意进制转换为十进制 int main() { int trans(char a[],int ); char arr[100]; int t; printf("请输入进制的类型:"); scanf("%d",&t); printf("请输入该进制的数:

- &gt;code vs 1475 m进制转十进制

1475 m进制转十进制 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 将m进制数n转化成一个十进制数 m<=16 题目保证转换后的十进制数<=100 输入描述 Input Description 共一行 n和m 输出描述 Output Description 共一个数 表示m进制的n化成十进制的数 样例输入 Sample Input 1010 2 样例输出 Sample Output 10 数据范围

华为机试—“十七进制”转“十进制”

题目:"十七进制"转"十进制" 实现"十七进制"转"十进制"算法:输入一个十七进制数字的字符串(字母一律大写),输出这个数值对应的十进制结果,达到进制转换目的,范围:0-0xFFFFFFFF. #include<stdio.h> #include<string.h> void solve(char *s) { int len=strlen(s); int i=0; int ans=0; while(i&

从M进制转换为N进制

/// <summary> /// 从M进制转换为N进制 /// </summary> internal class MBase2NBase { /// <summary> /// M进制值字符串 /// </summary> private string MValue = "123"; /// <summary> /// 除法商 /// </summary> private string Quotient = n

c-八进制 转 十进制

概述 其实x进制转十进制的算法都差不多,不过如果是针对于字符形式,他们却有点不同.使用指针和数组的形式计算,又不同.这里演示将字符型的数组形式的八进制转成十进制: 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 5 #define MAX 10 6 7 //初始化数组为八进制. 8 void 9 init(char *octal) { 10 gets(octal); 11 } 12 13

(HDUStep 1.2.6)decimal system(任意进制转十进制)

题目: decimal system Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3622 Accepted Submission(s): 1419   Problem Description As we know , we always use the decimal system in our common life, even us

m进制转十进制

1475 m进制转十进制 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 将m进制数n转化成一个十进制数 m<=16 题目保证转换后的十进制数<=100 输入描述 Input Description 共一行 n和m 输出描述 Output Description 共一个数 表示m进制的n化成十进制的数 样例输入 Sample Input 1010 2 样例输出 Sample Output 10 #include<

C语言:十进制进制转换为其他进制(思想:查表法)

// //  main.c //  Hex conversion // //  Created by ma c on 15/7/22. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:十进制向任意进制之间的转换(查表法). #include <stdio.h> //十六进制的转换 void ToHex(int num) { int temp; char chs[8];//定义一个临时容器,长度为8,8X4=32位比特 int

十进制和n进制的转换(10进制转换为36进制)

答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; maps[2]="2"; maps[3]="3"; maps[4]="4"; maps[5]="5"; maps[6]="6"; maps[7]="7"; maps[8]="8&quo