//《C语言综合项目实战》项目三//
//关于进制转换问题,本项目仅由十进制转二进制,和二进制转换十进制入手,通过编写两个函数,分开达到进制转换的效果。
//其他进制转换问题,方法与本项目转换方法类似或相同。
#include<stdio.h>
#include<math.h>//头文件<math.h>,因为本项目使用了pow(a,b)函数。
void shi();//声明一个空类型的函数shi;
void er();//声明一个空类型的函数er;
int main() {
int a = 0;//声明整形变量a,用于用户选择哪种进制的转换。
printf("\t1.十进制转换二进制\n");
printf("\t2.二进制转换十进制\n");
printf("\t请选择:");
scanf_s("%d", a);
switch (a) {//使用switch语句,对用户选择的进制转换进行相应的操作;
case 1:shi();//用户输入了1,调用函数shi;
case 2:er();//用户输入了2,调用函数er;
default:printf("输入错误");//用户输入了其他的数字,导致错误;
}
}
void shi() {//对函数shi,进行自定义。
int b = 0, c=0,e = 1,f=0;//声明整形变量b,c,e,f.
printf("请输入你要转换的数据:");
//b用于存储用户所输入需要转换的数据。
scanf_s("%d", &b);
while (b > 0) {//使用while循环,进行十进制转换为二进制。 例子:24转换二进制
c= b % 2; //c用于存储b除于2的余数。 2-> 24 -------0
b = b / 2; //b不断除于2,一步步深入。 2-> 12---------0
//2->6----------0
//2->3----------1
//2->2----------1 二进制数:11000
f += c * e;//f用于存储所转换成的二进制数。
e = e * 10;//e用于将所转换出来的二进制数乘以10,曾加自己的位数。
}
printf("%d", f);//将所转换出来的二进制数输出。
}
void er() {//对函数er,进行自定义。
int a = 0;//声明整形变量a,c,d,f;
int c = 0, d = 0,f=0;
//a用于存储用户所输入需要转换的数据。
//c用于存储a除于10所余的数.
//d用于存储二进制数转换为十进制的数。
//f用于二进制数所在的位数进行2的f次方计算。
printf("请输入你要转换的数据:");
scanf_s(" %d", &a);
while (a > 0) {
c = a % 10;
a = a / 10;
d += c * pow(2, f); //因为二进制转换为十进制,是位数的二次方X该位数的值,所以使用pow函数进行运算。
f++;
}
printf("%d", d);//将所转换出来的十进制数输出。
}
//总结:十进制转换为二进制,还可以运用数组进行运算,此项目不予阐述。
// while使用过程中,出现一些自增运算的错误。
#C语言学习笔记#进制转换问题
最新推荐文章于 2023-11-30 01:20:00 发布