[C / C ] 仿真算法通过改变基数
关于算法的改变,你可以在网上看到的数字, 然而,该方案将在系统变更后实施 10 给我们 2, 8, 16 并根据我们做正确的打印出来的表格.
执行对开发-C
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #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终端
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #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 小数
简单问题的代码爆炸鸟瞰, 请不要张贴这样的事情一遍
比较, 这个问题很简单,但这样它显示的是视觉形象如上述,我觉得并不难,但它不是简单的.
你可以安装一个几行的算法完成. 这是所有代码的模拟算法, 重申其算法是模拟NHE.