运行截图
一
二、函数功能介绍
1.
int step_1(char m[],int n){
int a,b=0,c,i;
c=n+48;
a=strlen(m);
for(i=0;i=c){
b=1;
break;
}
}else{
if(m[i]<'0'||m[i]>'9'&&m[i]<'A'||m[i]>'F'){
b=1;
break;
}
}
}
return b;
}
分析所输入的数字是否符合所输入进制的格式
2
void step_2(int m,int n){
int a,b;
if(n==2){
printf("八进制:");
unchange10(m,8);
printf("十进制:");
printf("%d\n",m);
printf("十六进制:");
unchange10(m,16);
}else if(n==8){
printf("二进制:");
unchange10(m,2);
printf("十进制:");
printf("%d\n",m);
printf("十六进制:");
unchange10(m,16);
}else if(n==10){
printf("二进制:");
unchange10(m,2);
printf("八进制:");
unchange10(m,8);
printf("十六进制:");
unchange10(m,16);
}else if(n==16){
printf("二进制:");
unchange10(m,2);
printf("八进制:");
unchange10(m,8);
printf("十进制:");
printf("%d\n",m);
}
}
根据所输入的进制来输出所需要的进制
3
int change10(char m[],int n){
int a,i,b=0;
a=strlen(m);
if(n!=16){
for(i=a-1;i>=0;i--){
b += (m[i]-'0')*pow(n,i);
}
}else if(n==16){
for(i=a-1;i>=0;i--){
if(m[i]<10){
b += m[i]*pow(n,i);
}else{
m[i]=m[i]-'A'+10;
b += m[i]*pow(n,i);
}
}
}
return b;
}
将所输入的数转换为十进制
4
void unchange10(int m,int n){
int b=100;
int a[b],sum=0,i;
for(i=0;m>0;m/=n){
a[i]=m%n;
i++;
}
i--;
for(;i>=0;i--){
if(a[i]<10){
printf("%d",a[i]);
}else{
printf("%c",a[i]+55);
}
}
printf("\n");
}
将十进制的数转换为其他进制
三.main函数
#include
#include
#include
int main(){
int n=100;
char a[n];
int b,c,d;
printf("请输入所转换数的进制数:\n");
printf("二进制 八进制 十进制 十六进制\n");
scanf("%d",&b);
printf("请输入所要转换的数:\n");
scanf("%s",&a);
if(step_1(a,b)==1){
printf("输入了错误的数\n");
}else{
printf("数经过转换后为:\n");
c=change10(a,b);
step_2(c,b);
}
return 0;
}
定义一个字符串数组来更好的转换进制
四.思维导图
五.问题分析
在试着运行的时候发现数值过大,原来是字符串没有理解深透,‘0’没有减去,在对于十六进制的转换和转出的时候思考耗费时间过长。
六.代码互评
网络1914 黄家雯
void decimalism_to_hexadecimal(int num) /*十进制转十六进制*/
{
int op[100]; /*定义一个数组来储存每个位子上数字的位子*/
char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; //定义一个标志字符串,用来将原十进制数转换成对应的字符
int i;
int m; //用来存放原数除16的余数,便于后面在数组hex中对应字符的取用
int count = 0;
while (num != 0) //正序求余,存放进数组op中
{
op[count++] = num % 16;
num /= 16;
}
for (i = count - 1; i >= 0; i--) //倒序取余数
{
m = op[i];
printf("%c", hex[m]); //让每位子数字输出对应的字符
}
printf("\n");
}
取余的思想更有利于取数。
七.总结
这次的题目让我对函数的运用和数学思维运用更上一层楼,主要还是在字符串的使用,与代码的简化和缩减上面游侠很大功夫。
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编