C++进制转换

合集下载

c语言十进制转换为二进制的 函数

c语言十进制转换为二进制的 函数

c语言十进制转换为二进制的函数在C语言中,可以使用以下函数将十进制数转换为二进制数:#include <stdio.h>#include <math.h>//函数声明void decimalToBinary(int decimalNum);//主函数int maiint decimalNum;//获取用户输入的十进制数printf("请输入一个十进制数:");scanf("%d", &decimalNum);//调用函数进行转换decimalToBinary(decimalNum);return 0;//函数定义void decimalToBinary(int decimalNum)int binaryNum[32]; // 存储二进制数的数组int i = 0; // 循环变量//将十进制数转换为二进制数while (decimalNum > 0)binaryNum[i] = decimalNum % 2; // 取余数decimalNum = decimalNum / 2; // 取商i++;}//输出二进制数printf("转换为二进制数为:");for (int j = i - 1; j >= 0; j--)printf("%d", binaryNum[j]);}以上是一个将十进制数转换为二进制数的简单示例。

具体实现思路如下:1.在主函数中,首先获取用户输入的十进制数。

2. 调用decimalToBinary函数进行转换。

3. 在decimalToBinary函数中,定义一个长度为32的整型数组binaryNum,用于存储二进制数。

4.使用循环将十进制数转换为二进制数。

循环条件是十进制数大于0。

-取十进制数对2的余数,并将余数存储在数组对应索引位置。

-将十进制数除以2,得到商作为下一次循环的十进制数。

c标准16进制转换为10进制

c标准16进制转换为10进制

c标准16进制转换为10进制在C语言中,你可以使用`strtol`函数将16进制字符串转换为10进制整数。

以下是一个简单的示例:```c#include <stdio.h>#include <stdlib.h>int main() {char hexString[] = "1A"; // 16进制字符串// 使用strtol将16进制字符串转换为10进制整数long decimalNumber = strtol(hexString, NULL, 16);// 打印结果printf("16进制数%s 转换为10进制数为: %ld\n", hexString, decimalNumber);return 0;}```上述代码中,`strtol`函数的第一个参数是要转换的字符串,第二个参数是一个指向字符指针的指针,用于存储无法转换的剩余部分的指针。

第三个参数指定进制,这里是16表示16进制。

`strtol`会返回一个长整型数,即转换后的10进制整数。

请注意,在实际应用中,你可能需要进行错误检查以确保转换过程没有出错。

例如:```c#include <stdio.h>#include <stdlib.h>int main() {char hexString[] = "1A"; // 16进制字符串// 使用strtol将16进制字符串转换为10进制整数char *endptr;long decimalNumber = strtol(hexString, &endptr, 16);// 检查是否发生了错误if (*endptr != '\0') {printf("转换错误: 无效的16进制数\n");} else {// 打印结果printf("16进制数%s 转换为10进制数为: %ld\n", hexString, decimalNumber);}return 0;}```。

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语言课程设计进制转换设计目的

c语言课程设计进制转换设计目的

c语言课程设计进制转换设计目的一、课程目标知识目标:1. 学生能够理解二进制、八进制、十进制和十六进制的基本概念及它们之间的区别;2. 学生能够掌握不同进制之间的转换方法,特别是二进制与十进制的转换;3. 学生能够运用C语言编写程序实现进制转换,理解其背后的算法逻辑。

技能目标:1. 学生能够独立编写进制转换的C语言程序,并调试运行成功;2. 学生通过课程实践,培养编程解决问题的能力,提高逻辑思维能力;3. 学生能够运用所学知识,解决生活中与进制转换相关的实际问题。

情感态度价值观目标:1. 学生通过学习进制转换,培养对计算机科学的兴趣,激发探究精神;2. 学生在学习过程中,培养团队合作意识,学会相互帮助和分享;3. 学生认识到编程在生活中的应用,增强实践能力,提高对信息技术的认识。

本课程针对高中年级学生,以C语言为载体,结合进制转换的知识点,旨在提高学生的编程能力、逻辑思维能力和解决实际问题的能力。

课程强调实践性,让学生在动手实践中掌握知识,培养兴趣,激发创新精神。

同时,注重培养学生的团队合作意识和情感态度,使他们在学习过程中形成正确的价值观。

通过本课程的学习,为学生今后的计算机科学学习打下坚实基础。

二、教学内容1. 基本概念:介绍二进制、八进制、十进制和十六进制的基础知识,阐述它们之间的相互关系和转换意义。

- 教材章节:第一章 计算机基础知识2. 进制转换方法:- 二进制与十进制的转换:重点讲解“按权展开法”和“除二取余法”;- 其他进制之间的转换:简要介绍八进制、十进制与十六进制之间的转换方法。

- 教材章节:第二章 算法基础3. C语言实现进制转换:- 数据类型和数据表示:复习C语言中的整型数据类型,了解不同进制表示方法;- 算法实现:详细讲解进制转换算法,以及C语言编程实现;- 教材章节:第五章 循环语句4. 程序设计与调试:- 编写进制转换程序:指导学生编写二进制与十进制转换的C语言程序;- 调试与优化:教授程序调试方法,引导学生优化程序性能。

c语言各进制转换方法

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语言 uint8_t 转10进制

c语言 uint8_t 转10进制

c语言uint8_t 转10进制C语言中的uint8_t是一种特定的数据类型,它代表了一个8位无符号整数。

在计算机中,整数可以使用不同的进制表示,其中最常见的是十进制、二进制、八进制和十六进制。

本文将以uint8_t转换为十进制为主题,详细介绍如何将uint8_t类型的变量从二进制或其他进制表示转换为十进制表示。

首先,我们需要先了解一些基本概念。

十进制是我们最为熟悉的进制,它由0到9这10个数字组成,每增加一位数值高位权重增加十倍。

例如,1234这个数字可以拆分为1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1。

而二进制是计算机中最基础的进制,它只由0和1两个数字组成。

其他进制如八进制和十六进制都是可以通过转换关系来表示为二进制或十进制。

接下来我们将开始具体的转换过程。

假设我们有一个uint8_t类型的变量,用来存储8位二进制数值。

我们想将其转换为十进制表示。

首先,我们需要了解二进制数是如何表示的。

二进制数的权重从右往左递增,每位的权重分别为2的0次方、2的1次方、2的2次方,以此类推。

例如,一个8位二进制数的最低位权重为2的0次方,即1;次低位权重为2的1次方,即2;最高位权重为2的7次方,即128。

接下来,我们需要将这个8位二进制数转换为十进制。

我们可以从最低位开始,将每位的数值与对应的权重相乘,然后将所有位的结果相加。

具体步骤如下:1. 将二进制数的最低位与权重相乘。

如果最低位为1,则结果为该位对应的权重值;如果最低位为0,则结果为0。

2. 将二进制数的次低位与权重相乘。

如果次低位为1,则结果为该位对应的权重值;如果次低位为0,则结果为0。

3. 重复上述步骤,直到将所有位的结果相加。

4. 将所有位的结果相加得到的数值即为二进制数的十进制表示。

例如,假设我们有一个uint8_t变量,其二进制表示为"10101010"。

我们可以按照上述步骤将其转换为十进制表示:1. 最低位为0,所以最低位与权重的乘积为0。

转换进制程序C语言,C语言各进制转换源代码

转换进制程序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语言十进制转换为二进制固定8位并逐位输出

c语言十进制转换为二进制固定8位并逐位输出

c语言十进制转换为二进制固定8位并逐位输出标题:C语言中十进制转换为二进制固定8位并逐位输出的方法——深入理解二进制表示概要:本文将详细介绍如何使用C语言将十进制数转换为二进制,并将其输出为固定8位的二进制数。

通过对二进制表示的深入讨论,我们将帮助读者更好地理解二进制数的原理和应用。

文章将从简单的二进制基础知识开始,逐步探索如何进行十进制到二进制的转换,同时提供一些实用技巧和编程示例。

目录:1. 了解二进制表示2. 十进制到二进制的转换方法2.1 除二取余法2.2 移位法3. 固定8位的二进制输出4. 编程实例5. 总结与展望1. 了解二进制表示二进制是一种由0和1组成的系统,是计算机中最基本的数值系统。

在二进制中,每一位表示一个值的倍数,从右至左分别为1、2、4、8、16……。

理解二进制的基本原理对于计算机编程非常重要,因为计算机内部的所有数据都以二进制形式存储和处理。

2. 十进制到二进制的转换方法2.1 除二取余法将十进制数除以2,将得到的余数作为二进制数的最低位,将商继续除以2,直到商为0为止。

将余数的顺序颠倒即可得到十进制数的二进制表示。

这种方法简单易懂,适合手动计算小范围的二进制数。

2.2 移位法移位法是一种更常用的将十进制数转换为二进制的方法。

通过将十进制数不断右移,并记录每次移位后的最低位,最终得到二进制表示。

这种方法不需要进行除法运算,适合在计算机程序中使用。

3. 固定8位的二进制输出在C语言中,固定输出8位的二进制数可以使用位运算和格式控制符来实现。

通过逐位输出二进制数的每一位,我们可以在控制台或文件中实现固定位数的二进制输出。

4. 编程示例下面是一个使用C语言将十进制数转换为固定8位二进制并逐位输出的示例程序:```c#include <stdio.h>void printBinary(int decimal) { int i;for (i = 7; i >= 0; i--) {int bit = (decimal >> i) & 1; printf("%d", bit);}}int main() {int decimal;printf("请输入一个十进制数:"); scanf("%d", &decimal);printf("二进制表示为:");printBinary(decimal);printf("\n");return 0;}```5. 总结与展望通过本文,我们深入探讨了十进制数转换为固定8位二进制并逐位输出的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十进制转换为二进制、八进制、十六进制的C++程序
#include<iostream>
#include<string>
using namespace std;
bool lab=true;
int main()
{
void tobinary(int r);
void to16(int r);
void to8(int r);
cout<<"请输入一个十进制整数:";
int a;
int b;
int r;
string bin;
bool ttss=false;
bool temp=false;
do{
bool tt=temp;
bool signture=false;
bool change=false;
do{
bool flags=signture;
cin>>a;
if(!cin)
{
cin.clear();
cin.ignore(100,'\n');
flags=true;
cout<<"你输入了一个非法数字,请重新输入:";
}
change=flags;
}while(change);
cout<<"你输入的值是:"<<a<<endl;
if(a<0)
{
b=-a;
lab=false;
r=b;
}
else {
r=a;
lab=true;
}
bool goon=false;
cout<<"请选择你要将你输入的数据转换成什么进制的数据,你可以选择二进制,八进制,十六进制;"<<endl;
do{
do{
cout<<"请输入你的选择,你可以输入2 or 8 or 16:";
cin>>bin;
if(bin!="2"&&bin!="8"&&bin!="16")
{
cout<<"请确定你输入的是如下的数据:2, 8, 16";
}
}while(bin!="2"&&bin!="8"&&bin!="16");
if(bin=="2")
tobinary(r);
else if(bin=="8")
to8(r);
else if(bin=="16")
to16(r);
bool err=false;
bool err2=false;
char judge;
cout<<"如果你还想将你刚才输入的数据转换成别的进制,请输入'y' or 'Y';如果不想继续转换该数据,请输入'n' or 'N':"<<endl;
do{
bool err1=err2;
cin>>judge;
if(judge=='y'||judge=='Y')
goon=true;
else if(judge=='n'||judge=='N')
goon=false;
else
{
cout<<"你输入了非法的字符,请确认你输入的是字符(y/n):";
err1=true;
}
err=err1;
}while(err);
}while(goon);
char strings;
bool err=false;
bool err4=false;
cout<<"如果你想继续输入别的数据来进行转换,请输入'y' or 'Y'"<<endl;
cout<<"否则请输入'n' or 'N';"<<endl;
do{
bool err3=err4;
cin>>strings;
if(strings=='y' || strings=='Y')
tt=true;
else if(strings=='n'||strings=='N')
tt=false;
else{
cout<<"你输入了非法的字符,请确认你输入的是字符(y/n):";
err3=true;
}
err=err3;
}while(err);
if(tt)
cout<<"请输入你想转换进制的新数据:";
ttss=tt;
}while(ttss);
return 0;
}
void tobinary(int r)
{
int i=32;
int j,k;
char str[33];
memset(str,'0',33);
str[32]='\0';
do{
j=r;
r=r/2;
k=j-r*2;
if(k)
str[--i]='1';
else
str[--i]='0';
}while(r!=0);
if(!lab)
str[0]='1';
cout<<str<<endl;
}
void to16(int r)
{
int i=8;
int j,k;
char str[9];
memset(str,'0',9);
str[8]='\0';
do{
j=r;
r=r/16;
k=j-r*16;
if(k>9)
{
switch(k)
{
case 10:str[--i]='A';break;
case 11:str[--i]='B';break;
case 12:str[--i]='C';break;
case 13:str[--i]='D';break;
case 14:str[--i]='E';break;
case 15:str[--i]='F';break;
}
}
else
switch(k)
{
case 9:str[--i]='9';break;
case 8:str[--i]='8';break;
case 7:str[--i]='7';break;
case 6:str[--i]='6';break;
case 5:str[--i]='5';break;
case 4:str[--i]='4';break;
case 3:str[--i]='3';break;
case 2:str[--i]='2';break;
case 1:str[--i]='1';break;
case 0:str[--i]='0';break;
}
}while(r!=0);
if(!lab)
str[0]='1';
cout<<str<<endl;
}
void to8(int r)
{
int i=12;
int j,k;
char str[13];
memset(str,'0',13);
str[12]='\0';
do{
j=r;
r=r/8;
k=j-r*8;
switch(k)
{
case 7:str[--i]='7';break;
case 6:str[--i]='6';break;
case 5:str[--i]='5';break;
case 4:str[--i]='4';break;
case 3:str[--i]='3';break;
case 2:str[--i]='2';break;
case 1:str[--i]='1';break;
case 0:str[--i]='0';break;
}
}while(r!=0);
if(!lab)
str[0]='1';
cout<<str<<endl;
}。

相关文档
最新文档