[C / C ] 仿真算法通过改变基数

关于算法的改变,你可以在网上看到的数字, 然而,该方案将在系统变更后实施 10 给我们 2, 8, 16 并根据我们做正确的打印出来的表格.
执行对开发-C
基数转换

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
#define d 179//186
#define ng 196//205
#define gi 197//206
#define swap(type, a, b) {type temp = a; a= b; b =temp;}
void gotoxy(int x, int y)	// chuyen con tro toi (x,y)
{
	static HANDLE h = NULL; 
	if(!h)
		h = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD c = { x, y }; 
	SetConsoleCursorPosition(h,c);
}

void reverse(char s[])		// dao nguoc xau
{
	int i;
	for (i=0; i<strlen(s)/2; i++)
		swap(char, s[i], s[strlen(s)-i - 1]);
}

int main()
{
	int a, n;
	int x, y = 3, sys, i, l1, l2, count;
	char s1[100], s2[100], s[100], result[1000];
	char again;	
	char *syschar = (char*) malloc(20*sizeof(char));
	begin:
	x = 4, sys = 2, i, l1 = 0, l2 = 0, count =0;
	printf("Enter number want convert : ");
	scanf("%d", &n);
	a = n;
	do
	{
		printf("Enter number system (2,8,16): ");
		scanf("%d", &sys);
	}while (sys != 2 && sys != 8 && sys != 16);
	if (sys == 2) strcpy(syschar, "01"); //syschar = "01";
	else if (sys == 8) strcpy(syschar, "01234567");
	else if (sys == 16) strcpy(syschar, "0123456789ABCDEF");

	gotoxy(x, y);
	printf("%d",n);
	while (n>0)
	{
		sprintf(s1,"%-2d", n);				// chuyen n sang xau s1
		sprintf(s2,"%-2d",n/sys);			// chuyen n/sys sang xau s2
		result[count] = syschar[n%sys];	// cong phan du vao kq
		l1 = strlen(s1);					
		l2 = strlen(s2);
		gotoxy(x + l1, y);		
		printf(" %c %d",d, sys);		// in | va co so
		gotoxy(2, ++y);	
		if (count>0) printf("%c", d);	// in mu ten
		gotoxy(x, y);
		for (i=0; i<l1 + 3 + l2; i++)	// in -------
			if (i==l1+1) printf("%c", gi);
			else printf("%c", ng);
		gotoxy(2, ++y);	
		if (count==0) printf("%c",30);	// in duong thang dung cua mui ten
		else printf("%c", d);
		gotoxy(x, y);
		for (i = 0; i<l1-2; i++)		// in khoang trong truoc so du
			printf(" ");
		sprintf(s,"%-2d %c %s", n%sys, d, s2);	// in so du va thuong
		printf("%-2d %c %s", n%sys, d, s2);
		x += l1-2 + strlen(s) - l2; 			// tang x den vi tri moi
		n /=sys;
		count++;
	}
	y+=7;
	result[count] = '\0';
	reverse(result);
	printf("nn%d(10) = %s(%d)",a, result, sys);
	printf("nDo you want continue? (y/n)");
	fflush(stdin);
	again = getchar();
	again = toupper(again);
	if (again == 'Y') goto begin;
	free(syschar);
	return 0;
}

实现对Linux终端
基数转换

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define d 124//179//186
#define ng 45//196//205
#define gi 124//197//206
#define gotoxy(type, x, y) printf("%c[%d;%df",0x1B,x, y)
#define swap(type, a, b) {type temp = a; a= b; b =temp;}
void reverse(char s[])		// dao nguoc xau
{
	int i, l = strlen(s)/2;
	for (i=0; i<l; i++)
		swap(char, s[i], s[strlen(s)-i - 1]);
}

int main()
{
	int a, n;
	int x = 4, y, sys, i, l1, l2, count;
	char s1[100], s2[100], s[100], result[1000];
	char again;	
	char *syschar = (char*) malloc(20*sizeof(char));
	do
	{
		y = 5; sys = 2; l1 = 0; l2 = 0; count =0;
		printf("Enter number want convert : ");
		scanf("%d", &n);
		a = n;
		do
		{
			printf("Enter number system (2,8,16): ");
			scanf("%d", &sys);
		}while (sys != 2 && sys != 8 && sys != 16);
		if (sys == 2) strcpy(syschar, "01"); //syschar = "01";
		else if (sys == 8) strcpy(syschar, "01234567");
		else if (sys == 16) strcpy(syschar, "0123456789ABCDEF");
		
		gotoxy(int, x, y);
		printf("%d",n);
		while (n>0)
		{
			sprintf(s1,"%-2d", n);				// chuyen n sang xau s1
			sprintf(s2,"%-2d",n/sys);			// chuyen n/sys sang xau s2
			result[count] = syschar[n%sys];	// cong phan du vao kq
			l1 = strlen(s1);					
			l2 = strlen(s2);
			gotoxy(int, x , y + l1);		
			printf(" %c %d",d, sys);		// in | va co so
			gotoxy(int, ++x, 2);	
			if (count>0) printf("%c", d);	// in mu ten
			gotoxy(int, x, y);
			for (i=0; i<l1 + 3 + l2; i++)	// in -------
				if (i==l1+1) printf("%c", gi);
				else printf("%c", ng);
			gotoxy(int, ++x, 2);	
			if (count==0) printf("%c",'^');	// in duong thang dung cua mui ten
			else printf("%c", d);
			gotoxy(int, x, y);
			for (i = 0; i<l1-2; i++)		// in khoang trong truoc so du
				printf(" ");
			sprintf(s,"%-2d %c %s", n%sys, d, s2);	// in so du va thuong
			printf("%-2d %c %s", n%sys, d, s2);
			y += l1-2 + strlen(s) - l2; 			// tang x den vi tri moi
			n /=sys;
			count++;
		}
		x += 7;
		result[count] = '\0';
		reverse(result);
		printf("nn%d(10) = %s(%d)",a, result, sys);
		printf("nDo you want continue? (y/n)");
		fgets (s,256,stdin);
		scanf("%c", &again);
		again = toupper(again);
	}while (again == 'Y');// goto begin;
	return 0;
}

阅读更多:
准则基本系统之间切换
我们看一些 2, 往来 8, 往来 16 小数