C语言dos程序源代码分享(进制转换器)

今天给大家分享一个dos程序的源代码

这个程序是本人在学习中的经验分享

如果有问题或者建议,欢迎大家一起交流

源代码:

  1 /*本程序为一个进制转换器
  2 本程序不作为商业用途,完全为技术交流
  3 喜欢C语言的同学关注我的博客,有值得推荐的我一定会推荐给大家*/
  4 #include <stdio.h>
  5 #include<stdlib.h>
  6 #include <time.h>
  7 #include<windows.h>
  8 
  9 //对函数的声明
 10 void fact1();
 11 int func1(int n);
 12 void func2(int n, int num);
 13 void func3(int *a, int i, int n);
 14 void func4(int m);
 15 void func5();
 16 
 17 int menu;    //定义菜单做为一个全局变量
 18 int count = 1;
 19 int main(void)
 20 {
 21     //给菜单设置一个循环
 22     do
 23     {
 24         printf("第%d次\n", count++);
 25         printf("**********************************************\n");
 26         //调用倒计时函数
 27         func5();
 28         //定义菜单的功能
 29         puts("!!欢迎使用进制转换器!!\n");
 30         puts("1.十进制->二进制");
 31         puts("2.十进制->八进制");
 32         puts("3.十进制->十六进制");
 33         puts("0.退出\n");
 34         //输入菜单
 35         printf("请输入你的选项:");    scanf_s("%d", &menu);
 36         //执行菜单
 37         if (menu == 0)    break;
 38         else if (menu >= 1 && menu <= 3)
 39             fact1();
 40         else
 41             printf("抱歉,你输入的选项有误;请重新输入!!!\n");
 42         printf("\n**********************************************\n");
 43         printf("\n\n");
 44     } while (menu != 0);
 45 
 46 }
 47 //定义菜单为1时的函数
 48 void fact1()
 49 {
 50     int num;
 51     int n;
 52     printf("请输入一个数:");    scanf_s("%d", &num);
 53     n = func1(menu);
 54     func2(n, num);
 55 
 56 }
 57 //定义需要转化的进制数的函数
 58 int func1(int n)
 59 {
 60     //如果为1,则返回2进行二进制
 61     if (menu == 1)
 62         return 2;
 63     //如果为2,则返回8进行八进制
 64     else if (menu == 2)
 65         return 8;
 66     else
 67         return 16;
 68 }
 69 //定义处理进制的函数
 70 void func2(int n, int num)
 71 {
 72     int i = 0;
 73     int a[100];
 74     do
 75     {
 76         *(a + i) = num % n;
 77         num /= n;
 78         i++;
 79     } while (num != 0);
 80     func3(a, i, n);
 81 }
 82 //定义输出进制的函数
 83 void func3(int *a, int i, int n)
 84 {
 85     int j;
 86     printf("转换为%d进制为:", n);
 87     for (j = i - 1;j >= 0;j--)
 88     {
 89         if (n == 16 && (*(a + j)) >= 10 && (*(a + j)) <= 16)
 90             func4((*(a + j)));
 91         else
 92             printf("%d", *(a + j));
 93     }
 94 }
 95 //定义转换16进制的时候函数
 96 void func4(int m)
 97 {
 98     switch (m)
 99     {
100     case 10: printf("A");    break;
101     case 11: printf("B");    break;
102     case 12: printf("C");    break;
103     case 13: printf("D");    break;
104     case 14: printf("E");    break;
105     case 15: printf("F");    break;
106     }
107 }
108 //自定义倒计时函数
109 void func5()
110 {
111     int i;
112     //从5开始倒计时
113     for (i = 5;i >= 1;i--)
114     {
115         printf("%d\b", i);
116         Sleep(1000);    //设置延时1秒
117     }
118     printf("\b");
119 }

本代码仅大家学供习交流,不做其它用途

posted @ 2017-01-23 21:35  livekeys  阅读(1105)  评论(0编辑  收藏  举报