第二次博客作业: 函数+进制转换器v1.0beta

一,运行截图**

二,函数介绍

1,二进制转十进制

int f(int x)
{
	int i,m,q,sum=0;
	m = x;
	for (i=0; ;i++) {
		q = m%10;
		m = m/10;
		sum = sum + q*pow(2,i);
		if (m==0) {
			break;
		}
	}
	return sum;
}

2,二进制转八进制

int g(int x)
{
	int sum,k;
	k= f(x);
	sum = m(k);
	return sum;

思路:先将二进制转换为十进制,再将十进制转换为八进制。

3,八进制转二进制

int h(int x)
{	int m,sum;
	m = j(x);
	sum = c(m);
	return sum;
}

思路:先将八进制转化为十进制,再将十进制转换为二进制。

4,八进制转十进制

int j(int x)
{
	int i, m, q, sum = 0;
	m = x;
	for (i = 0; ; i++) {
		q = m % 10;
		m = m / 10;
		sum = sum + q * pow(8, i);
		if (m == 0) {
			break;
		}
	}
	return sum;
}

5,十进制转二进制

int c(int x)
{
	int sum, m, i,t;
	sum = 0;
	t = x;
	for (i = 0; ; i++) {
		m = t % 2;
		t = t / 2;
		sum = sum + m * pow(10, i);
		if (t == 0) {
			break;
		}
	}
	return sum;
}

6,十进制转八进制

int m(int x)
{
	int sum, m, i, t;
	sum = 0;
	t = x;
	for (i = 0; ; i++) {
		m = t % 8;
		t = t / 8;
		sum = sum + m * pow(10, i);
		if (t == 0) {
			break;
		}
	}
	return sum;
}

三,main函数

#include <stdio.h>
#include <math.h>
int f(int x);//二进制转十进制 
int g(int x);//二进制转八进制 
int h(int x);//八进制转二进制
int j(int x);//八进制转十进制
int c(int x);//十进制转二进制
int m(int x);//十进制转八进制
int main()
{
	int n,number; 
	printf("进制转换器\n");
	printf("请用数字输入您的进制数与您的数字:");
	scanf("%d %d",&n,&number);
	if (n==2) {
		int i,r,t,flag=0;
		t=number;
		for (i=1; ;i++) {
			r=t%10;
			t=t/10;
			if(t==0) {
				break;
			}
			if(r>=2) {
				flag++;
			}
		}
		if (flag!=0) {       //判断是否合法
			printf ("对不起,您输入的数字与进制不匹配\n"); 
		}
		else {
			int s,b;
			s = f(number);
			b = g(number);
			printf("十进制:%d\n八进制:%d\n",s,b);
			printf("感谢您的使用\n");
		}
	}
	else if(n==8) {      //判断是否合法
		int i,r,t,flag=0;
		t=number;
		for (i=1; ;i++) {
			r=t%10;
			t=t/10;
			if (r>=8) {
				flag++;
			}
			if (t==0) {
				break;
			}
		}
		if (flag!=0) {
			printf("对不起,您输入的数字与进制不匹配\n");
		}
		else {
			int e,s;
			e = h(number);
			s = j(number);
			printf("二进制:%d\n十进制:%d\n",e,s);
			printf("感谢您的使用\n");
		}
	}
	else if (n==10) {   //判断是否合法
		int e,b,l;
		e = c(number);
		b = m(number);
		printf("二进制:%d\n八进制:%d\n",e,b);
		printf("感谢您的使用\n");
	}
	else {
		printf("对不起,暂时不支持此进制的转换\n");
	}
	return 0;
}

四,思维导图

五,遇到的问题

1,一开始完全弄不懂各个进制之间转换如何通过C语言实现,后来通过函数解决了。

2,数组的知识不熟悉,写的代码不能够实现较大的数的转换。

3,十六进制与其他进制的转换的方法不清楚。

4,函数名称不够明确,经常把我自己写的函数搞混。

5,界面不够清晰,没有人性化的设置。

六,代码互评

林洁颖

int binaryconversion(int number){
 if(number/2==0){
     return number%2;
 }
 else{
     return number%2+binaryconversion(number/2)*10;
 }
}

运用了递归法,代码简洁,清晰,相比之下,我的转换方法过于直接,也过于厚重,要耗费很长的时间。

七,总结与收获

1,通过这次博客园的作业,我充分了解二进制,八进制,十进制之间的转换关系。

2,加强我对函数的理解,让我能够更加熟练的运用函数解决问题,简化代码。

3,了解到了自己定义的函数可以互相引用,从而简化过程。

4,深刻的了解了自己在数组这方面的薄弱,也了解到了数组的用途。

posted @ 2019-11-10 20:14  熊正雄  阅读(169)  评论(0编辑  收藏  举报