最新C任意进制转换程序
c语言进制转换算法
c语言进制转换算法在C语言中,可以使用以下算法进行进制转换:1. 将十进制数转换为任意进制数```c#include <stdio.h>void decimalToBase(int n, int base) {char result[32] = {'\0'}; // 用于存储结果的字符数组int i = 0;while (n > 0) {int remainder = n % base;result[i++] = remainder < 10 ? remainder + '0' : remainder - 10 + 'A'; // 将余数转换为对应的字符存储到结果数组中n = n / base;}for (int j = i - 1; j >= 0; j--) {printf("%c", result[j]); // 从后往前输出结果数组中的字符}}int main() {int n = 102; // 十进制数int base = 16; // 目标进制数printf("Base %d: %s\n", base, decimalToBase(n, base)); // 调用函数进行转换并输出结果return 0;}```这个算法的基本思路是不断地将原数除以目标进制的基数,将余数转换为对应的字符存储到结果数组中,直到原数为0为止。
最后从后往前输出结果数组中的字符即可得到转换后的结果。
2. 将任意进制数转换为十进制数这个算法可以使用类似于上面的算法的逆过程实现,即不断地将原数乘以目标进制的基数,取出整数部分作为新的余数,直到原数为0为止。
最后将所有的余数按照从低位到高位的顺序相加即可得到转换后的十进制数。
c语言各进制转换方法
二进制,八进制,十进制,十六进制之间的转换算法一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
C语言实现十进制转换为任意进制
C语言实现十进制转换为任意进制要实现十进制转换为任意进制,可以利用栈的数据结构来实现。
栈是一种先入后出的数据结构,可以方便地进行进制转换操作。
以下是C语言实现十进制转换为任意进制的完整代码:```c#include <stdio.h>#include <stdlib.h>typedef structint top;int capacity;int* array;} Stack;Stack* createStack(int capacity)Stack* stack = (Stack*) malloc(sizeof(Stack));stack->top = -1;stack->capacity = capacity;stack->array = (int*) malloc(stack->capacity * sizeof(int));return stack;int isFull(Stack* stack)return stack->top == stack->capacity - 1;int isEmpty(Stack* stack)return stack->top == -1;void push(Stack* stack, int item)if (isFull(stack))printf("Stack is full, cannot push element.\n");return;}stack->array[++(stack->top)] = item;int pop(Stack* stack)if (isEmpty(stack))printf("Stack is empty.\n");return -1;}return stack->array[(stack->top)--];// Function to convert decimal number to arbitrary basevoid decimalToArbitraryBase(int decimalNumber, int base) Stack* stack = createStack(100); // assuming maximum 100 digitswhile (decimalNumber != 0)int remainder = decimalNumber % base;push(stack, remainder);decimalNumber /= base;}printf("The base-%d representation of the decimal number is: ", base);while (!isEmpty(stack))int digit = pop(stack);if (digit < 10)printf("%d", digit);} elseprintf("%c", 'A' + digit - 10);}}printf("\n");free(stack->array);free(stack);int maiint decimalNumber;int base;printf("Enter decimal number: ");scanf("%d", &decimalNumber);printf("Enter base: ");scanf("%d", &base);decimalToArbitraryBase(decimalNumber, base);return 0;```该代码使用了一个自定义的`Stack`结构来实现栈的基本操作。
转换进制程序C语言,C语言各进制转换源代码
转换进制程序C语⾔,C语⾔各进制转换源代码#include#include#includevoid ten_two(int);void ten_eight(int);void ten_sixten(int);void two_ten(int);void two_eight(int);void two_sixten(int);void eight_two(int);void eight_ten(int);void eight_sixten(int);void sixten_two(char r[], int k);void sixten_ten(char r[], int k);void sixten_eight(char r[], int k);int main(void){int i, j, number = 0;int temp;char change[10];printf("=============================================================\n");printf(" 欢 迎 使 ⽤ 进 制 转 换 程 序 \n");printf(" 作 者:李 研 时 间:2009 年7 ⽉5 ⽇ \n");printf("=============================================================\n");do{temp = 0;//fflush(stdin);printf("\n请选择转换前的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");printf("转换前的进制是:");scanf("%d", &i);case 2:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);switch(j){case 2:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_eight(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;printf("转换后的进制是:");scanf("%d", &j);switch(j){case 8:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_two(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 10:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");{case 10:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_two(number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_eight(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 16:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);printf("\n同进制之间不⽤转化!\n"); temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_two(change, number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_eight(change, number); temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);if(change[number] == '\0')break;}sixten_ten(change, number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 0:printf("\n谢谢使⽤!\n");}}while(temp == 1);return 0;}/*以下为: ⼆进制转换为⼗进制,⼋进制,⼗六进制.*/ void two_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;}if(s == 1)printf("您的输⼊有误!请重新输⼊\n"); elseprintf("\n转换后的数为:%d\n", result); }void two_eight(int a){int i, j, k, s = 0;int p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");elsefor(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}printf("\n");}}void two_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if (p[j] > 10){switch(p[j])p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}else p[j] += 48;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}void eight_two(int a){int i, j, k, s = 0;int result = 0;int p[30];for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}}void eight_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d\n", result); }}void eight_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 8){}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:}}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%c", p[k]);}printf("\n");}}/*以下为: ⼗六进制转换为⼗进制,⼆进制,⼋进制.*/ void sixten_ten(char a[], int k){int i, j, s = 0;int result = 0;int b[50];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1'){b[i] = a[i] - 48;}else{case 'B': b[i] = 11; break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14;s = 1;}}}for(i = 1, j = k - 1; j >= 0; j--, i *= 16) {result += b[j] * i;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d", result); }}void sixten_two(char a[], int k){int i, j, s = 0;int result = 0;int b[50];int p[30];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1')b[i] = a[i] - 48;else{switch(a[i]){break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14; break; case 'f':}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}}void sixten_eight(char a[], int k){int i, j, s = 0;int result = 0;int b[30];int p[30];if(a[i] <= '9' && a[i] >= '1') b[i] = a[i] - 48;else{switch(a[i]){case 'A':b[i] = 10;break;case 'B':b[i] = 11;break;case 'C':b[i] = 12;break;case 'D':b[i] = 13;break;case 'E':b[i] = 14;break;case 'F':b[i] = 15;break;case 'a':b[i] = 10;break;case 'b':b[i] = 11;break;case 'c':b[i] = 12;b[i] = 13;break;case 'e':b[i] = 14;break;case 'f':b[i] = 15;break;default:s = 1;}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");/*以下为: ⼗进制转换为⼆进制,⼋进制,⼗六进制.*/ void ten_two(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 2;a = a / 2;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}void ten_eight(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 8;a = a / 8;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");{int j, k;int p[30];for(j = 0; a != 0; j++) {p[j] = a % 16;a = a / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}}printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}。
c语言进制转换算法代码
c语言进制转换算法代码c语言的进制转换是研究计算机原理时非常重要的知识,它能够帮助我们更有效更准确的记录信息和处理计算问题。
下面我们就来介绍c语言中进制转换的基本算法代码:一、进制转换的基本步骤1. 确定源进制和目标进制,比如从十进制转换为八进制、十六进制;2. 将源进制数据转换为相应的目标进制数据,比如8进制转换为10进制;3. 将转换后的目标进制数据输出到屏幕或者其他输出设备中。
二、c语言进制转换算法代码1. 八进制转换为十进制:long octalToDecimal(long n){long dec_value = 0; // 十进制数int i = 0;while(n != 0){dec_value += (n%10) * pow(8,i);n = n/10;i++;}return dec_value;}2. 十进制转换为八进制:long DecimalToOctal(long n) {int i=1;long octal_value=0;while (n!=0){octal_value+=(n%8)*i;n/=8;i*=10;}return octal_value;}3. 八进制转换为十六进制:long octalToHexadecimal(long n) {long dec_value = 0; // 十进制数int base = 1;while (n != 0){long temp = n % 10;dec_value += temp * base;n = n / 10;base = base * 8;}// 将十进制数转换为十六进制long rem;long hex_value = 0; // 十六进制数long i = 1;while (dec_value != 0){rem = dec_value % 16;hex_value = hex_value+ rem*i;dec_value = dec_value / 16;i = i * 10;}return hex_value;}4. 十进制转换为十六进制:long DecToHex(long n){long rem,hex=0, i=1;while(n!=0){rem = n % 16;hex = hex + rem * i;n /= 16;i *= 10;}return hex;}总结:以上就是c语言中进制转换的基本算法代码,深入理解这些程序的运行原理,能够帮助我们更深入了解编程的基本原理,也为我们后续c编程奠定更良好的基础。
c语言_各种进制转换
c语言各种进制转换计算机中常用的数的进制主要有:二进制、八进制、十六进制。
2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100 ←二进制数6543210 ←排位方法例如二进制换算十进制的算法:1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20↑ ↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010 110 111 011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010 = 2110 = 4+2 = 6111 = 4+2+1 = 7011 = 2+1 = 3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:0101 1011 1011运算为:0101 = 4+1 = 51011 = 8+2+1 = 11(由于10为A,所以11即B)1011 = 8+2+1 = 11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:计算:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100五、八进制数转换为十进制数八进制就是逢8进1。
c++进制转化代码
c++进制转化代码下面是一个示例的 C++ 代码,用于进行不同进制之间的转换:```cpp#include <iostream>using namespace std;// 十进制转二进制string decimalToBinary(int decimal) {string binary = "";while (decimal > 0) {binary += to_string(decimal % 2);decimal /= 2;}return reverse(binary);}// 十进制转八进制string decimalToOctal(int decimal) {string octal = "";while (decimal > 0) {octal += to_string(decimal % 8);decimal /= 8;}return reverse(octal);}// 十进制转十六进制string decimalToHexadecimal(int decimal) {string hexadecimal = "";while (decimal > 0) {if (decimal % 16 < 10) {hexadecimal += to_string(decimal % 16);} else {hexadecimal += char('A' + decimal % 16 - 10);}decimal /= 16;}return reverse(hexadecimal);}// 二进制转十进制int binaryToDecimal(string binary) {int decimal = 0;for (int i = 0; i < binary.size(); i++) {decimal += (binary[i] - '0') * pow(2, binary.size() - 1 - i);}return decimal;}// 八进制转十进制int octalToDecimal(string octal) {int decimal = 0;for (int i = 0; i < octal.size(); i++) {decimal += (octal[i] - '0') * pow(8, octal.size() - 1 - i);}return decimal;}// 十六进制转十进制int hexadecimalToDecimal(string hexadecimal) {int decimal = 0;for (int i = 0; i < hexadecimal.size(); i++) {if (hexadecimal[i] >= '0' && hexadecimal[i] <= '9') {decimal += (hexadecimal[i] - '0') * pow(16, hexadecimal.size() -1 - i);} else if (hexadecimal[i] >= 'A' && hexadecimal[i] <= 'F') {decimal += (hexadecimal[i] - 'A' + 10) * pow(16, hexadecimal.size() - 1 - i);}}return decimal;}// 主函数int main() {int decimalNumber;cout << "请输入一个十进制数: ";cin >> decimalNumber;cout << "十进制数" << decimalNumber << " 转换为二进制为: " << decimalToBinary(decimalNumber) << endl;cout << "十进制数" << decimalNumber << " 转换为八进制为: " << decimalToOctal(decimalNumber) << endl;cout << "十进制数" << decimalNumber << " 转换为十六进制为: " << decimalToHexadecimal(decimalNumber) << endl;string binaryNumber, octalNumber, hexadecimalNumber;cout << "请输入一个二进制数: ";cin >> binaryNumber;cout << "二进制数" << binaryNumber << " 转换为十进制为: " << binaryToDecimal(binaryNumber) << endl;cout << "请输入一个八进制数: ";cin >> octalNumber;cout << "八进制数" << octalNumber << " 转换为十进制为: " << octalToDecimal(octalNumber) << endl;cout << "请输入一个十六进制数: ";cin >> hexadecimalNumber;cout << "十六进制数 " << hexadecimalNumber << " 转换为十进制为: " << hexadecimalToDecimal(hexadecimalNumber) << endl;return 0;}```在上述代码中,我们定义了三个函数 `decimalToBinary`、`decimalToOctal` 和`decimalToHexadecimal`,用于将十进制数转换为二进制、八进制和十六进制数。
C语言实现任意进制转换
C语言实现任意进制转换任意进制转换是指将一个数从一种进制表示转换为另一种进制表示。
在计算机科学中,常见的进制包括二进制、八进制、十进制和十六进制。
下面我们将以C语言为例,实现任意进制之间的转换。
一、十进制到其他进制的转换1.二进制转换对于一个十进制数,我们可以通过对其进行除2取余的操作,得到其二进制表示。
具体的实现如下:```c#include<stdio.h>void decimalToBinary(int num)int binary[32], i = 0;while (num > 0)binary[i] = num % 2;i++;num /= 2;}for (int j = i - 1; j >= 0; j--)printf("%d", binary[j]);}int mainint decimalNumber;printf("请输入一个十进制数:");scanf("%d", &decimalNumber);printf("转换为二进制数为:");decimalToBinary(decimalNumber);return 0;```2.八进制转换对于十进制数,可以通过对其进行除8取余的操作,得到其八进制表示。
具体的实现如下:```c#include<stdio.h>void decimalToOctal(int num)int octal[100], i = 0;while (num > 0)octal[i] = num % 8;i++;num /= 8;}for (int j = i - 1; j >= 0; j--)printf("%d", octal[j]);}int mainint decimalNumber;printf("请输入一个十进制数:");scanf("%d", &decimalNumber);printf("转换为八进制数为:");decimalToOctal(decimalNumber);return 0;```3.十六进制转换对于一个十进制数,可以通过对其进行除16取余的操作,得到其十六进制表示。
c 十进制转换为任意进制
c 十进制转换为任意进制十进制转换为任意进制是一种常见的数学运算,它被广泛应用于各种科学和工程领域。
无论是计算机科学、电子工程、通信工程还是物理学等领域,都离不开数字的表示和转换。
在本文中,我将向您介绍如何将一个十进制数转换为任意进制数,并提供详细的步骤和示例来帮助您更好地理解这个过程。
首先,让我们明确一下什么是十进制数和任意进制数。
在我们日常生活中使用的数字系统,包括数学、计算机和大部分科学计算,都是十进制系统。
十进制系统使用10个数码(0-9)来表示数字。
而任意进制数是一种可以使用任意基数进行表示的数字系统,它使用基数作为进位的单位。
例如,二进制系统的基数为2,八进制系统的基数为8,十六进制系统的基数为16。
接下来,我将详细介绍将十进制数转换为任意进制的步骤:步骤1:确定要转换的十进制数和目标进制数在进行转换之前,我们首先需要确定要转换的十进制数和目标进制数。
假设我们要将十进制数137转换为二进制数。
步骤2:准备除法表格为了方便计算,我们可以准备一个除法表格。
表格的列数应与目标进制数相同。
对于二进制数,我们需要两列。
二进制数的位数除法结果余数位1位2在这个表格中,我们将记录每一位的除法结果和余数。
步骤3:进行除法运算从左到右依次处理每一位数字。
我们将十进制数一直除以目标进制数,直到商为0为止。
每次除法运算,我们将记录下商和余数,并将商作为下一次运算的被除数。
让我们以137转换为二进制的例子来说明:137 ÷2 = 68 余168 ÷2 = 34 余034 ÷2 = 17 余017 ÷2 = 8 余18 ÷2 = 4 余04 ÷2 = 2 余02 ÷2 = 1 余01 ÷2 = 0 余1步骤4:记录二进制数根据除法运算的结果,我们可以从下往上读取余数,得到转换后的二进制数。
在本例中,137的二进制表示为10001001。
进制转换c语言代码十一进制转十进制
进制转换c语言代码十一进制转十进制在C语言中,我们可以使用以下代码将十一进制数转换为十进制数。
假设输入的十一进制数是一个字符串,我们可以使用循环和模运算来转换它。
```cinclude <>include <>// 十一进制转十进制int base11ToBase10(char base11) {int base10 = 0;int len = strlen(base11);for (int i = 0; i < len; i++) {char digit = base11[i];if (digit >= '0' && digit <= '9') {digit -= '0';} else if (digit >= 'A' && digit <= 'K') {digit -= 'A' + 10;} else if (digit >= 'a' && digit <= 'k') {digit -= 'a' + 10;} else {printf("Invalid base 11 digit: %c\n", digit); return -1;}base10 = base10 11 + digit;}return base10;}int main() {char base11[100];printf("Enter a base 11 number: ");scanf("%s", base11);int base10 = base11ToBase10(base11);if (base10 != -1) {printf("Base 10 equivalent: %d\n", base10); }return 0;}```这个程序首先定义了一个函数`base11ToBase10`,它接收一个字符串参数,然后遍历字符串中的每个字符,将其转换为相应的十进制值,并使用模运算将其添加到总和中。
c语言将十进制数转化为二进制数的程序
c语言将十进制数转化为二进制数的程序在计算机科学中,二进制是最基本的数字系统,因为计算机内部所有数据都是以二进制形式存储的。
因此,将一个十进制数转化为二进制数是编程中最基础的任务之一。
下面我们将详细介绍如何使用C语言将十进制数转化为二进制数。
步骤1:获取用户输入首先,我们需要从用户那里获取一个十进制数。
在C语言中,我们可以使用scanf语句获取用户的输入。
例如,使用以下代码获取用户输入:```int decimal_number;printf("Enter a decimal number: ");scanf("%d", &decimal_number);```这段代码将提示用户输入一个十进制数,并将该值存储在变量decimal_number中。
步骤2:将十进制数转化为二进制数接下来,我们将使用一种称为“除以2法”的算法将十进制数转换为二进制数。
该算法的基本思路是:重复将十进制数除以2,直到商为0为止。
在这个过程中,每次的余数(0或1)将作为二进制数的一个位值。
为了将该算法具体化,我们将在一个循环中执行该算法,并在每次循环中打印出当前的余数。
以下是完整的代码:```int decimal_number, remainder, binary_number = 0, power_of_10 = 1;printf("Enter a decimal number: ");scanf("%d", &decimal_number);while (decimal_number > 0) {remainder = decimal_number % 2;binary_number += remainder * power_of_10;power_of_10 *= 10;decimal_number /= 2;}printf("The binary equivalent is: %d", binary_number); ```让我们一步一步地解释这个代码的每个部分:- 首先,我们定义了需要使用的变量:decimal_number表示用户输入的十进制数;remainder表示当前的余数;binary_number表示计算机内部的二进制数;power_of_10表示当前位值的所需的10的幂。
C语言的进制转换及算法实现教程
C语⾔的进制转换及算法实现教程1、其他进制转⼗进制1.1、⼆进制转⼗进制转换规程:从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次⽅,然后求和,例如:⼆进制 1011 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1 + 2 + 0 + 8 = 111.2、⼋制转⼗进制转换规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次⽅,然后求和,例如:⼋进制 0123 = 3*8^0 + 2*8^1 + 1*8^2 = 3+16+64 = 831.3、⼗六进制转⼗进制转换规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次⽅,然后求和,例如:⼗六进制 0x34A = 10*16^0 + 4*16^1 + 3*16^2 = 10+64+768 = 8422、⼗进制转其他进制2.1、⼗进制转⼆进制binary规则:将该数不断除以2,直到商为0为⽌,然后将每步得到的余数倒过来,就是对应的⼆进制,故此法叫做除商逆序取余法;案例:将56转换为⼆进制56 :56 / 2 = 28 余028 / 2 = 14 余014 / 2 = 7 余07 / 2 = 3 余13 / 2 = 1 余11 /2 = 0余 1故56转换为⼆进制的结果是:111000代码实现:#include <stdio.h>//转⼗进制⼆进制void main() {printf("请输⼊⼀个⼗进制数:");int binary = 0; //⼆进制数int b = 1; //循环标志int num[100] ; //⽤来存⼆进制的数组int index = 0; //数组的下标int count = -1; //⽤来计算数组的使⽤个数,这⾥使⽤-1是因为数组的下标是从0开始的//所以当我们循环⼀次去⾃增的时候,第⼀次应该是从0开始,如果count的初始值是0的话//就会导致使⽤的第⼀个数组的下标为1,那样会导致存数据的下标index和记录使⽤的下标count不⼀致//使数据溢出scanf("%d",&binary);while (b) {num[index] = binary % 2; //每次运算取余binary /= 2; //每次运算⼆进制数需要除以2//printf("num[%d]=%d\n",index,num[index]);index++; //每循环⼀次数组下标就移⼀位count++; //每循环⼀次就表⽰占⽤了数组的⼀个位置if (binary == 0) {b = 0;}}printf("占⽤数组位置%d个",count+1);printf("\n");printf("⼆进制数为:");for (int i = count; i >=0; i--) {printf("%d",num[i]);}getchar();getchar();//回车会被接收,所以需要两个来暂停控制台}2.2、⼗进制转⼋进制octonary规则:将该数不断除以8,直到商为0,然后将每步得到的余数倒过来,就是对应的⼋进制。
c++中进制转换
c++中进制转换在C++中,将一个数从一个进制转换到另一个进制非常简单,只需使用一些简单的函数和算法即可。
首先,我们需要知道C++中表示不同进制的前缀。
例如,前缀“0x”表示十六进制,“0”表示八进制,而没有前缀的数字默认为十进制。
转换一个十进制数到另一个进制,我们可以使用以下算法:1. 将十进制数除以目标进制的基数,将余数保存下来。
2. 将商除以目标进制的基数,将余数保存下来。
3. 重复上述步骤,直到商为0。
4. 将所有保存的余数倒序排列,得到转换后的数。
示例代码如下:```c++#include <iostream>#include <string>using namespace std;string toBase(int num, int base) {string result = '';while (num > 0) {int remainder = num % base;num /= base;result = to_string(remainder) + result;}return result;}int main() {int num = 100;cout << '十进制 ' << num << ' 转二进制: ' <<toBase(num, 2) << endl;cout << '十进制 ' << num << ' 转八进制: ' <<toBase(num, 8) << endl;cout << '十进制 ' << num << ' 转十六进制: ' << toBase(num, 16) << endl;return 0;}```上述代码输出为:```十进制 100 转二进制: 1100100十进制 100 转八进制: 144十进制 100 转十六进制: 64```同样,我们也可以将一个二进制、八进制或十六进制数转换为十进制数。
c语言二进制十进制十六进制转换计算
C语言是一种高级编程语言,它具有丰富的数学计算功能,其中包括二进制、十进制和十六进制之间的转换计算。
本文将重点介绍C语言中如何进行二进制、十进制和十六进制之间的转换计算,以及其相关的方法和注意事项。
一、二进制、十进制和十六进制的概念及表示方法1. 二进制二进制是一种基数为2的数制,它只包含0和1两个数字。
在C语言中,二进制数通常以0b或0B开头表示,例如0b1010表示十进制的10。
2. 十进制十进制是我们常用的数制,基数为10,包含了0到9这10个数字。
在C语言中,十进制数直接以数字形式表示,例如123表示十进制的123。
3. 十六进制十六进制是一种基数为16的数制,它包含0到9这10个数字以及A 到F这6个英文字母,分别对应10到15。
在C语言中,以0x或0X 开头表示十六进制数,例如0x1A表示十进制的26。
二、二进制与十进制的转换计算方法1. 二进制转十进制二进制转换为十进制可以使用加权法,即将二进制数从右向左依次乘以2的幂次方,然后将结果相加。
1010转换为十进制的计算过程为:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10。
2. 十进制转二进制十进制转换为二进制可以使用除2取余法,即将十进制数不断除以2,将每次的余数倒序排列即可得到二进制数。
26转换为二进制的计算过程为:26÷2=13……0,13÷2=6……1,6÷2=3……0,3÷2=1……1,1÷2=0……1,倒序排列得到xxx。
三、十六进制与十进制的转换计算方法1. 十六进制转十进制十六进制转换为十进制可以使用加权法,即将十六进制数从右向左依次乘以16的幂次方,然后将结果相加。
1A转换为十进制的计算过程为:1*16^1 + A*16^0 = 26。
2. 十进制转十六进制十进制转换为十六进制可以使用除16取余法,即将十进制数不断除以16,将每次的余数倒序排列,A对应10,B对应11,依次类推,直到商为0即可得到十六进制数。
任意进制转十进制代码c语言for循环实现
任意进制转十进制代码c语言for循环实现以下是一个使用for循环实现任意进制转十进制的C语言代码示例:```c#include <stdio.h>#include <string.h>int main() {char base[10]; // 存储输入的进制char num[100]; // 存储输入的数字字符串int length, i, j, decimal = 0;printf("请输入数字的进制:");scanf("%s", base);printf("请输入数字:");scanf("%s", num);length = strlen(num);for (i = 0; i < length; i++) {for (j = 0; j < strlen(base); j++) {if (num[i] == base[j]) { // 如果当前字符在进制中存在,则进行计算decimal += (num[i] - '0') * pow(atoi(base), i); // 计算十进制值break; // 跳出内层循环}}}printf("十进制值为:%d\n", decimal);return 0;}```该代码首先使用scanf函数获取输入的进制和数字字符串,然后使用strlen函数获取数字字符串的长度。
接下来使用两个for循环嵌套遍历数字字符串和进制字符串,如果当前字符在进制中存在,则计算对应的十进制值,并累加到decimal变量中。
最后输出decimal变量的值即可。
十进制转十六进制c语言代码
十进制转十六进制c语言代码
1 十进制转十六进制C语言代码
十进制转十六进制的C语言代码,是用C语言实现十进制整数与十六进制之间相互转换的程序代码。
由于十六进制是二进制中更易于编写和阅读的一种表示形式,因此通过实现十进制与十六进制之间的转换,就可以使用者更加迅速、更加方便地完成十进制和十六进制数据之间的交互工作。
在C语言中实现十进制转十六进制的关键代码如下:
int main()
{
int num1;
printf("输入一个十进制数: ");
scanf("%d",&num1);
printf("转换后的十六进制数为:%X \n", num1);
return 0;
}
上面是十进制转十六进制C语言代码的关键代码片段,从这些代码我们可以看出,整个程序实现的思路和流程比较简单,首先是使用scanf函数实现输入一个十进制数,然后利用printf函数,将十进制数用“%X”指定为十六进制形式,最后输出十六进制数。
十进制转十六进制的C语言代码的实现,使用C语言的原生函数和特定的字符控制符,就可以实现十进制转十六进制的功能,从而在编程工作中的实现更加有效率的交互工作。
c语言 进制转换程序 八进制,十进制,十六进制。
标题:从简到繁:深度探讨C语言中的进制转换程序在计算机编程中,进制转换是一个非常重要且基础的概念。
而C语言作为一种重要的编程语言,对于进制转换程序的实现提供了丰富的支持和功能。
本文将从简到繁地探讨C语言中的进制转换程序,包括八进制、十进制和十六进制之间的转换,以便读者能够更深入地了解这一主题。
1. 八进制、十进制和十六进制的基本概念在开始探讨C语言中的进制转换程序之前,我们首先需要了解八进制、十进制和十六进制的基本概念。
八进制是基于8个数字(0-7)的一种进制表示方法,十进制是我们通常使用的十个数字(0-9)的表示方法,而十六进制则是基于16个数字(0-9以及A-F)的表示方法。
2. C语言中的进制转换函数在C语言中,我们可以使用一些内置的函数来进行进制转换,比如`sprintf`、`sscanf`等。
这些函数能够帮助我们将数字在不同进制之间进行转换,为我们编写进制转换程序提供了便利。
3. 实现八进制到十进制的转换让我们来看一下如何在C语言中实现八进制到十进制的转换。
我们可以利用`sprintf`函数将八进制数转换为字符串,然后使用`sscanf`函数将其转换为十进制数。
这样,就可以方便地实现八进制到十进制的转换了。
4. 实现十进制到十六进制的转换接下来,我们来看一下如何在C语言中实现十进制到十六进制的转换。
同样地,我们可以使用`sprintf`和`sscanf`函数来实现这一转换。
将十进制数转换为十六进制字符串,再将其转换为对应的十六进制数值,就可以完成这一转换过程了。
5. 实现十六进制到八进制的转换让我们看一下如何在C语言中实现十六进制到八进制的转换。
同样地,我们可以利用`sprintf`和`sscanf`函数来实现这一转换。
首先将十六进制数转换为对应的字符串,再将其转换为八进制数值,就可以完成这一转换过程了。
总结与回顾通过本文的介绍,我们深入探讨了C语言中进制转换的实现方法,包括八进制到十进制、十进制到十六进制以及十六进制到八进制的转换。
任意进制转换c++代码
以下是C++实现任意进制转换的代码:cpp复制代码#include<iostream>#include<string>#include<algorithm>using namespace std;string convertBase(int num, int base) {string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";string result = "";// Handle negative numbersif (num < 0) {result += "-";num = -num;}// Convert number to string with base 10while (num > 0) {result += digits[num % base];num /= base;}// Reverse the string if the base is less than 10if (base < 10) {reverse(result.begin(), result.end());}return result;}int main() {int num, base;cout << "Enter a number: ";cin >> num;cout << "Enter the base: ";cin >> base;cout << convertBase(num, base) << endl;return0;}该代码定义了一个convertBase函数,该函数将一个整数转换为指定进制的字符串表示形式。
它使用一个字符串digits来存储0到36的数字和字母,然后使用循环和除法将给定数字转换为指定进制的字符串表示形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C任意进制转换程序C语言写的一个任意进制转换的程序,不使用库提供的转换函数. / scale.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"#include#include#include#include#include #define WIDTH 10#define DATAWIDTH 50#define MAX 4294967295#define CONST_2 2#define CONST_3 3#define CONST_8 8#define CONST_9 9#define CONST_10 10#define CONST_16 16#define CHAR_0 '0'#define CHAR_9 '9'#define CHAR_A 'A'#define CHAR_a 'a'#define CHAR_Z 'Z'#define CHAR_SPACE ' '#define STRING_0 "0"#define STRING_Z "Z" bool Scale();bool GetSourceScale(int * scale_in);bool GetObjectScale(int * scale_out);double OtherToDeci(int scale_in,char inputdata[]);void DeciToOther(unsigned long deci,int scale_out,char outputdata[]);bool GetData(char data[],int CONCOUNT,int flg);bool GetScale(char temp[]);bool GetSource(int in_scale,char inputdata[]);void ScaleChange(int scale_in,char inputdata[],intscale_out,char outputdata[]);void CleanScreen(); int _tmain(int argc, _TCHAR* argv[]) { int flg = 0;char cs[WIDTH]; memset(cs,0x00,sizeof(cs)); while(1){printf("-----------------------------------------------------------------\n" );printf(" Data Transform Between Two Scales \n");printf(" ----------------------------------------\n"); /*进制转换主函数*/if(!Scale()){break;}printf("-----------------------------------------------------------------\n" );printf("input any key and press 'Enter' key to continue, 'Z' for exit:");if(!GetData(cs,WIDTH,flg)) /*判断是否继续执行下一次转换*/{break;}system("cls"); /*清屏*/} return 0;} bool Scale(){int scale_in,scale_out;char inputdata[DATAWIDTH];char outputdata[DATAWIDTH]; /*输入源数据进制*/if(!GetSourceScale(&scale_in))return false;} /*输入源数据*/if(!GetSource(scale_in,inputdata)){return false;} /*输入目标数据进制*/if(!GetObjectScale(&scale_out)){return false;} /*进行进制转换*/ScaleChange(scale_in,inputdata,scale_out,outputdata); return true;} bool GetSourceScale(int * scale_in) /*输入源数据进制*/ {char temparray[WIDTH];memset(temparray,0x00,sizeof(temparray)); printf("Input source data scale and press 'Enter' key(one of 2,8,10,16. 'Z' for exit):\n");if(!GetScale(temparray)){return false;*scale_in = atoi(temparray); return true;} bool GetObjectScale(int * scale_out) /*输入目标数据进制*/ {char temparray[WIDTH];memset(temparray,0x00,sizeof(temparray)); printf("Input object data scale and press 'Enter' key(one of 2,8,10,16. 'Z' for exit): \n");if(!GetScale(temparray)){return false;}*scale_out = atoi(temparray); return true;} bool GetData(char data[],int CONCOUNT,int flg) /*输入数据*/{int i,icount;char c;char *p;bool spaceFlag; i = 0;icount = 0;spaceFlag = true;while ((c = getchar()) != 0x0a){if (spaceFlag && c == CHAR_SPACE) /*去掉前空格*/{continue;} if (!spaceFlag && c == CHAR_SPACE) /*去掉后空格*/ {icount++;continue;}else if (icount > 0){if (flg){CleanScreen();printf("ERROR! Please input again('Z' for exit): \n"); /*输入进制或者源数据时,中间有空格,则重新输入*/i = 0;icount = 0;spaceFlag = true;fflush(stdin);continue;else{break;}} if (i == CONCOUNT - 1) /*判断是否输入数据过长*/{if (flg){CleanScreen();printf("ERROR! Too many characters.Please input again('Z' for exit): \n");memset(data,0x00,sizeof(data));fflush(stdin);i = 0;continue;}else{break;}} if (c == CHAR_0 && !strcmp(data,STRING_0))continue;} data[i] = c;i++;spaceFlag = false;} data[i] = '\0'; p = data;if (*p == CHAR_0 && strlen(p) > 1){p++;}strcpy(data,p); if (strlen(data) && !strcmp(data,STRING_Z)) {return false;}return true;} /*输入数据进制*/bool GetScale(char temp[]){int i,num,kbn_flg;char scalewidth[WIDTH];char * s;bool flag; kbn_flg = 1;flag = false; while (!flag){memset(scalewidth,0x00,sizeof(scalewidth));memset(temp,0x00,sizeof(temp)); if(!GetData(scalewidth,WIDTH,kbn_flg)) /*输入数据*/{return false;}s = scalewidth; if (!strlen(s)) /*判断是否输入数据*/{CleanScreen();printf("ERROR! Please input the scale(one of 2,8,10,16. 'Z' for exit): \n");continue;} i = 0;while (*s){if (*s >= CHAR_0 && *s <= CHAR_9) /*判断是否输入整数*/{temp[i] = *s;i++;s++;flag = true;}else{CleanScreen();printf("ERROR! Please input the scale(one of 2,8,10,16. 'Z' for exit): \n");flag = false;break;}}temp[i] = '\0'; num = 0;if (flag){num = atoi(temp);if (!(num == CONST_2 || num == CONST_8 || num == CONST_10 || num == CONST_16)) /*判断是否输入合法整数*/{CleanScreen();printf("ERROR! Please input the scale(one of 2,8,10,16. 'Z' forexit): \n");flag = false;}}}return true;} /*输入源数据*/bool GetSource(int in_scale,char inputdata[]){int i,kbn_flg;char * s;char sourcedata[DATAWIDTH];bool flag; kbn_flg = 1;flag = false; printf("Please input one %d scale data('Z' for exit): \n",in_scale);while (!flag){memset(sourcedata,0x00,sizeof(sourcedata));memset(inputdata,0x00,sizeof(inputdata));if(!GetData(sourcedata,DATAWIDTH,kbn_flg)) /*输入数据*/ {return false;fflush(stdin); s = sourcedata; if (!strlen(s)) /*判断是否输入数据*/{CleanScreen();printf("ERROR! The input is not available!Please input again('Z' for exit): \n");continue;} i = 0;while(*s) /*判断是否输入合法数据*/{if ((in_scale >= CONST_2 && in_scale <= CONST_10) && ( CHAR_0 <= *s && *s < in_scale + CHAR_0)){inputdata[i] = *s;i++;s++;flag = true;}else if ((in_scale == CONST_16)&& ((CHAR_0 <= *s && *s <= CHAR_9)|| (CHAR_A <= *s && *s <= in_scale + CHAR_A - CONST_10|| (CHAR_a <= *s && *s <= in_scale + CHAR_a - CONST_10 - 1))){inputdata[i] = *s;i++;s++;flag = true;}else{CleanScreen();printf("ERROR! The input is not available!Please input again('Z' for exit):\n");flag = false;break;}}inputdata[i] = '\0'; if (OtherToDeci(in_scale,inputdata) > (double)MAX){CleanScreen();printf("ERROR! The input is not available!Please input again(less than ");switch (in_scale){case CONST_2: printf("32 bits 1.");break;case CONST_8: printf("37777777777.");break;case CONST_10:printf("4294967295.");break;case CONST_16:printf("8 bits F or f.");break;}printf(" 'Z' for exit): \n");flag = false;continue;}}return true;} /*其他进制转换为十进制*/double OtherToDeci(int scale_in,char inputdata[]) {int i,len,midint;double middbl,temp; len = strlen(inputdata);temp = 0.00; for(i = 0;i < len; i++){midint = inputdata[i]; if ( CHAR_0 <= midint && midint <= CHAR_9 ){midint = midint - CHAR_0; /*0-9*/}else if ( CHAR_A <= midint && midint <= CHAR_Z ) {midint = midint - CHAR_A + CONST_10; /*A-Z*/}else{midint = midint - CHAR_a + CONST_10; /*a-z*/} middbl = midint * pow(scale_in,len-i-1);temp = temp + middbl;}return temp;} /*十进制转换为其他进制*/void DeciToOther(unsigned long deci,int scale_out,charoutputdata[]){int m,n; m = 0;n = 0; while (deci){m = deci % scale_out;if (m > CONST_9){outputdata[n] = m + CHAR_A - CONST_10;}else{outputdata[n] = m + CHAR_0;}deci = deci / scale_out;n++;} for (m = 0; m <= n / 2 - 1; m++) /*反序得到目标数据*/ {char t;t = outputdata[m];outputdata[m] = outputdata[n - 1 - m];outputdata[n - 1 - m] = t;}outputdata[n] = '\0';} void PutSource(char inputdata[]) /*输出源数据*/ {int k;if (!strcmp(inputdata,STRING_0)) /*源数据为0*/ {printf("(The source data is: 0)\n");}else{printf("(The source data is: ");for( k = 0; k < strlen(inputdata); k++ ){printf("%c",inputdata[k]);}printf(")\n");}} void ScaleChange(int scale_in,char inputdata[],int scale_out,char outputdata[]) /*进制转换*/{int k;unsigned long deci; deci = 0; if (scale_in == scale_out) /*原数据进制和目标数据进制相同,不用转换*/{if (!strcmp(inputdata,STRING_0)){printf("The object data is: \n0\n");}else{printf("The object data is: \n");for( k = 0; k < strlen(inputdata); k++ ){printf("%c",inputdata[k]);}printf("\n");}PutSource(inputdata);}else{if (scale_in == CONST_10){deci = atol(inputdata); /*源数据是十进制,直接转换为十进制数*/}else{deci = (unsigned long)OtherToDeci(scale_in,inputdata); /*其他进制转换为十进制*/} if (scale_out == CONST_10) /*如果目标进制是十进制,直接输出十进制数*/{printf("The object data is: \n%u \n",deci);}else{if (!deci) /*源数据为0*/{printf("The object data is: \n0\n");}else{DeciToOther(deci,scale_out,outputdata); /*十进制转换为其他进制*/ printf("The object data is: \n"); /*输出转换后结果*/for( k = 0; k < strlen(outputdata); k++ ){printf("%c",outputdata[k]);}printf("\n");}}PutSource(inputdata);}} void CleanScreen() /*清屏*/{static int errcount = 0;errcount++;if(!(errcount % CONST_3)){errcount = 0;system("cls");}}印象剑桥花园别墅一期市政景观工程__________________________________________________ 迷你高尔夫及果园施工组织设计编制单位:上海园林建筑有限公司编制日期:2005年11月收集于网络,如有侵权请联系管理员删除。